All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Farber, Eliav" <farbere@amazon.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: <jdelvare@suse.com>, <robh+dt@kernel.org>,
	<p.zabel@pengutronix.de>, <rtanwar@maxlinear.com>,
	<linux-hwmon@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <talel@amazon.com>,
	<hhhawa@amazon.com>, <jonnyc@amazon.com>, <hanochu@amazon.com>,
	<ronenk@amazon.com>, <itamark@amazon.com>, <shellykz@amazon.com>,
	<shorer@amazon.com>, <amitlavi@amazon.com>, <almogbs@amazon.com>,
	<dkl@amazon.com>, <andriy.shevchenko@intel.com>,
	"Farber, Eliav" <farbere@amazon.com>
Subject: Re: [PATCH v3 02/19] hwmon: (mr75203) fix VM sensor allocation when "intel, vm-map" not defined
Date: Thu, 1 Sep 2022 21:36:08 +0300	[thread overview]
Message-ID: <3364aecd-c1d0-3929-9f51-4d90549d8731@amazon.com> (raw)
In-Reply-To: <a48f6c26-232a-f3ae-01d1-277e5c9800ee@roeck-us.net>

On 9/1/2022 8:11 PM, Guenter Roeck wrote:
> CAUTION: This email originated from outside of the organization. Do 
> not click links or open attachments unless you can confirm the sender 
> and know the content is safe.
>
>
>
> On 9/1/22 08:24, Farber, Eliav wrote:
>> On 9/1/2022 5:44 PM, Guenter Roeck wrote:
>>> On Thu, Sep 01, 2022 at 11:39:58AM +0300, Farber, Eliav wrote:
>>>> On 8/31/2022 2:48 PM, Guenter Roeck wrote:
>>>> > On 8/30/22 22:49, Farber, Eliav wrote:
>>>> > > On 8/31/2022 8:36 AM, Guenter Roeck wrote:
>>>> > > > On 8/30/22 12:21, Eliav Farber wrote:
>>>> > > > > Bug fix - in case "intel,vm-map" is missing in device-tree
>>>> > > > > ,'num' is set
>>>> > > > > to 0, and no voltage channel infos are allocated.
>>>> > > > >
>>>> > > > > Signed-off-by: Eliav Farber <farbere@amazon.com>
>>>> > > > > ---
>>>> > > > >   drivers/hwmon/mr75203.c | 28 ++++++++++++----------------
>>>> > > > >   1 file changed, 12 insertions(+), 16 deletions(-)
>>>> > > > >
>>>> > > > > diff --git a/drivers/hwmon/mr75203.c b/drivers/hwmon/mr75203.c
>>>> > > > > index 046523d47c29..0e29877a1a9c 100644
>>>> > > > > --- a/drivers/hwmon/mr75203.c
>>>> > > > > +++ b/drivers/hwmon/mr75203.c
>>>> > > > > @@ -580,8 +580,6 @@ static int mr75203_probe(struct
>>>> > > > > platform_device *pdev)
>>>> > > > >       }
>>>> > > > >
>>>> > > > >       if (vm_num) {
>>>> > > > > -             u32 num = vm_num;
>>>> > > > > -
>>>> > > > >               ret = pvt_get_regmap(pdev, "vm", pvt);
>>>> > > > >               if (ret)
>>>> > > > >                       return ret;
>>>> > > > > @@ -594,30 +592,28 @@ static int mr75203_probe(struct
>>>> > > > > platform_device *pdev)
>>>> > > > >               ret = device_property_read_u8_array(dev, 
>>>> "intel,vm-map",
>>>> > > > > pvt->vm_idx, vm_num);
>>>> > > > >               if (ret) {
>>>> > > > > -                     num = 0;
>>>> > > > > +                     /*
>>>> > > > > +                      * Incase intel,vm-map property is not
>>>> > > > > defined, we
>>>> > > > > +                      * assume incremental channel numbers.
>>>> > > > > +                      */
>>>> > > > > +                     for (i = 0; i < vm_num; i++)
>>>> > > > > + pvt->vm_idx[i] = i;
>>>> > > > >               } else {
>>>> > > > >                       for (i = 0; i < vm_num; i++)
>>>> > > > >                               if (pvt->vm_idx[i] >= vm_num ||
>>>> > > > > - pvt->vm_idx[i] == 0xff) {
>>>> > > > > - num = i;
>>>> > > > > + pvt->vm_idx[i] == 0xff)
>>>> > > > > break;
>>>> > > >
>>>> > > > So all vm_idx values from 0x00 to 0xfe would be acceptable ?
>>>> > > > Does the chip really have that many registers (0x200 + 0x40 +
>>>> > > > 0x200 * 0xfe) ?
>>>> > > > Is that documented somewhere ?
>>>> > > According to the code vm_num is limited to 32 because the mask is
>>>> > > only 5 bits:
>>>> > >
>>>> > > #define VM_NUM_MSK    GENMASK(20, 16)
>>>> > > #define VM_NUM_SFT    16
>>>> > > vm_num = (val & VM_NUM_MSK) >> VM_NUM_SFT;
>>>> > >
>>>> > > In practice according to the data sheet I have:
>>>> > > 0 <= VM instances <= 8
>>>> > >
>>>> > Sorry, my bad. I misread the patch and thought the first part of
>>>> > the if statement was removed.
>>>> >
>>>> > Anyway, what is the difference between specifying an vm_idx value of
>>>> > 0xff and not specifying anything ? Or, in other words, taking the dt
>>>> > example, the difference between
>>>> >        intel,vm-map = [03 01 04 ff ff];
>>>> > and
>>>> >        intel,vm-map = [03 01 04];
>>>>
>>>> The actual number of VMs is read from a HW register:
>>>>     ret = regmap_read(pvt->c_map, PVT_IP_CONFIG, &val);
>>>>     ...
>>>>     vm_num = (val & VM_NUM_MSK) >> VM_NUM_SFT;
>>>>
>>>> Also, using:
>>>>     ret = device_property_read_u8_array(dev, "intel,vm-map", vm_idx,
>>>>                         vm_num);
>>>> in the driver will fail if vm_num > sizeof array in device-tree.
>>>>
>>>> So, if for example vm_num = 5, but you will want to map only 3 of them
>>>> you most set property to be:
>>>>     intel,vm-map = [03 01 04 ff ff];
>>>> otherwise if you set:
>>>>     intel,vm-map = [03 01 04];
>>>> it will assume the property doesn't, and will continue the flow in 
>>>> code
>>>> as if it doesn’t exist (which is not what the user wanted, and 
>>>> before my
>>>> fix also has a bug).
>>>
>>> There should be some error handling to catch this case (ie if the 
>>> number
>>> of entries does not match the expected count), or if a value in the 
>>> array
>>> is larger or equal to vm_num. Today the latter is silently handled 
>>> as end
>>> of entries (similar to 0xff), but that should result in an error.
>>> This would avoid situations like
>>>        intel,vm-map = [01 02 03 04 05];
>>> ie where the person writing the devicetree file accidentally entered
>>> index values starting with 1 instead of 0. A mismatch between vm_num
>>> and the number of entries in the array is silently handled as if there
>>> was no property at all, which is at the very least misleading and
>>> most definitely unexpected and should also result in an error.
>>
>>
>> I assume it is possible to tell according to the return value, if 
>> property
>> doesn’t exist at all, or if it does exists and size of array in
>> device-tree is smaller than vm_num.
>> In [PATCH v3 17/19] Andy wrote that “code shouldn't be a YAML validator.
>> Drop this and make sure you have correct DT schema” so I’m a bit 
>> confused
>> if code should validate “intel,bm-map” or if it is the user 
>> responsibility.
>> As this property was not added by me, I prefer not to fix it as part of
>> this series of patches.
>>
>
> You are changing the driver all over the place with 19 patches, including
> this code, but you don't want to add code that validates the devicetree
> data ? That seems odd.
>
OK. I have added patch #20 to validate that same VM index doesn't appear
more than once in intel,vm-map.

u32 vm_mask = 0;

for (i = 0; i < vm_num; i++) {
     if (vm_idx[i] >= vm_num || vm_idx[i] == 0xff)
         break;

     if (vm_mask & BIT(vm_idx[i])) {
         dev_err(dev, "Same VM appears more than once in intel,vm-map\n",
             vm_idx[i]);
         return EINVAL;
     }

     vm_mask |= BIT(vm_idx[i]);
}


>>
>>> Also, what happens if the devicetree content is something like the
>>> following ? Would that be valid ?
>>>        intel,vm-map = [00 01 01 01 01 01];
>>
>> If device-tree content would be:
>>      intel,vm-map = [00 01 01 01 01 01];
>> and assuming 16 channels for each VM, the hwmon sub-system will 
>> expose 90
>> sysfs to read voltage values.
>> In practice 16 – 31, 32 – 47, 48 – 63, 64 – 89 will all report the same
>> input signals for VM1.
>>
>
> Does that make any sense, and is there a valid reason to have a mapping
> table like the one in this example ?

I can't find any sense in having such a mapping.
Anyway the new patch will not allow it to happen.

--
Regards, Eliav


  reply	other threads:[~2022-09-01 18:37 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-30 19:21 [PATCH v3 00/19] Variety of fixes and new features for mr75203 driver Eliav Farber
2022-08-30 19:21 ` [PATCH v3 01/19] dt-bindings: hwmon: (mr75203) update "intel,vm-map" property to be optional Eliav Farber
2022-09-02 19:50   ` Rob Herring
2022-08-30 19:21 ` [PATCH v3 02/19] hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" not defined Eliav Farber
2022-08-31  2:39   ` Guenter Roeck
2022-08-31  4:36     ` [PATCH v3 02/19] hwmon: (mr75203) fix VM sensor allocation when "intel, vm-map" " Farber, Eliav
2022-08-31  5:36   ` [PATCH v3 02/19] hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" " Guenter Roeck
2022-08-31  5:49     ` [PATCH v3 02/19] hwmon: (mr75203) fix VM sensor allocation when "intel, vm-map" " Farber, Eliav
2022-08-31  6:09       ` Farber, Eliav
2022-08-31 11:48       ` Guenter Roeck
2022-09-01  8:39         ` Farber, Eliav
2022-09-01 14:44           ` Guenter Roeck
2022-09-01 15:24             ` Farber, Eliav
2022-09-01 17:11               ` Guenter Roeck
2022-09-01 18:36                 ` Farber, Eliav [this message]
2022-09-01 19:25                   ` Guenter Roeck
2022-09-01 19:49               ` Andy Shevchenko
2022-08-31  9:38   ` [PATCH v3 02/19] hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" " Andy Shevchenko
2022-09-02 12:08     ` [PATCH v3 02/19] hwmon: (mr75203) fix VM sensor allocation when "intel, vm-map" " Farber, Eliav
2022-09-02 14:15       ` Andy Shevchenko
2022-08-30 19:21 ` [PATCH v3 03/19] hwmon: (mr75203) update pvt->v_num to the actual number of used sensors Eliav Farber
2022-08-31  2:41   ` Guenter Roeck
2022-08-31  4:50     ` Farber, Eliav
2022-08-31  5:31       ` Guenter Roeck
2022-08-30 19:21 ` [PATCH v3 04/19] dt-bindings: hwmon: (mr75203) change "reset" property to be optional Eliav Farber
2022-08-31  8:21   ` Philipp Zabel
2022-08-31  9:43     ` Farber, Eliav
2022-08-31  9:48       ` Philipp Zabel
2022-09-02 19:51   ` Rob Herring
2022-09-03 19:16     ` Farber, Eliav
2022-08-30 19:21 ` [PATCH v3 05/19] hwmon: (mr75203) skip reset-control deassert for SOCs that don't support it Eliav Farber
2022-08-31  8:19   ` Philipp Zabel
2022-08-30 19:21 ` [PATCH v3 06/19] hwmon: (mr75203) fix multi-channel voltage reading Eliav Farber
2022-08-31  9:46   ` Andy Shevchenko
2022-09-01 13:12     ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 07/19] hwmon: (mr75203) enable polling for all VM channels Eliav Farber
2022-08-31 11:21   ` Andy Shevchenko
2022-08-31 11:55     ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 08/19] dt-bindings: hwmon: (mr75203) add "moortec,vm-active-channels" property Eliav Farber
2022-08-31 11:39   ` Rob Herring
     [not found]     ` <a8557b5a-6e27-2e66-161e-814fc0f69c1d@amazon.com>
2022-08-31 12:17       ` [PATCH v3 08/19] dt-bindings: hwmon: (mr75203) add "moortec, vm-active-channels" property Rob Herring
2022-08-31 17:47         ` Farber, Eliav
2022-08-31 19:19           ` Rob Herring
2022-08-31 19:55             ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 09/19] hwmon: (mr75203) add VM active channel support Eliav Farber
2022-08-31 11:48   ` Andy Shevchenko
2022-09-02 12:04     ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 10/19] dt-bindings: hwmon: (mr75203) add "moortec,vm-pre-scaler" property Eliav Farber
2022-09-02 19:57   ` Rob Herring
2022-09-03 19:34     ` [PATCH v3 10/19] dt-bindings: hwmon: (mr75203) add "moortec, vm-pre-scaler" property Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 11/19] hwmon: (mr75203) add VM pre-scaler support Eliav Farber
2022-08-31 12:02   ` Andy Shevchenko
2022-09-01 14:17     ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 12/19] hwmon: (mr75203) fix voltage equation for negative source input Eliav Farber
2022-08-31 12:04   ` Andy Shevchenko
2022-09-01 12:47     ` Farber, Eliav
2022-09-01 20:08       ` Andy Shevchenko
2022-08-30 19:22 ` [PATCH v3 13/19] hwmon: (mr75203) modify the temperature equation according to series 5 datasheet Eliav Farber
2022-08-31 12:06   ` Andy Shevchenko
2022-09-01 12:22     ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 14/19] dt-bindings: hwmon: (mr75203) add "moortec,ts-series" property Eliav Farber
2022-08-31  8:23   ` Philipp Zabel
2022-08-31  9:23     ` [PATCH v3 14/19] dt-bindings: hwmon: (mr75203) add "moortec, ts-series" property Farber, Eliav
2022-08-31  9:42       ` Philipp Zabel
2022-09-02 13:18         ` Farber, Eliav
2022-09-02 19:59   ` [PATCH v3 14/19] dt-bindings: hwmon: (mr75203) add "moortec,ts-series" property Rob Herring
2022-09-03 19:12     ` [PATCH v3 14/19] dt-bindings: hwmon: (mr75203) add "moortec, ts-series" property Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 15/19] hwmon: (mr75203) add support for series 6 temperature equation Eliav Farber
2022-08-31 12:08   ` Andy Shevchenko
2022-09-01 12:14     ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 16/19] dt-bindings: hwmon: (mr75203) add coefficient properties for the thermal equation Eliav Farber
2022-09-02 20:03   ` Rob Herring
2022-09-03 19:16     ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 17/19] hwmon: (mr75203) parse temperature coefficients from device-tree Eliav Farber
2022-08-31 12:11   ` Andy Shevchenko
2022-09-01  9:54     ` Farber, Eliav
2022-08-30 19:22 ` [PATCH v3 18/19] hwmon: (mr75203) add debugfs to read and write temperature coefficients Eliav Farber
2022-08-31 12:14   ` Andy Shevchenko
2022-09-01  6:54     ` Farber, Eliav
2022-09-01 14:28       ` Guenter Roeck
2022-09-01 19:46       ` Andy Shevchenko
2022-08-30 19:22 ` [PATCH v3 19/19] hwmon: (mr75203) fix coding style space errors Eliav Farber
2022-08-31 12:15   ` Andy Shevchenko
2022-09-01 14:21     ` Farber, Eliav
2022-09-01 14:46       ` Guenter Roeck
2022-09-01 15:31         ` Farber, Eliav
2022-09-01 17:09           ` Guenter Roeck
2022-09-01 18:40             ` Farber, Eliav

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3364aecd-c1d0-3929-9f51-4d90549d8731@amazon.com \
    --to=farbere@amazon.com \
    --cc=almogbs@amazon.com \
    --cc=amitlavi@amazon.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dkl@amazon.com \
    --cc=hanochu@amazon.com \
    --cc=hhhawa@amazon.com \
    --cc=itamark@amazon.com \
    --cc=jdelvare@suse.com \
    --cc=jonnyc@amazon.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=p.zabel@pengutronix.de \
    --cc=robh+dt@kernel.org \
    --cc=ronenk@amazon.com \
    --cc=rtanwar@maxlinear.com \
    --cc=shellykz@amazon.com \
    --cc=shorer@amazon.com \
    --cc=talel@amazon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.