> -----Original Message-----
> From: Guenter Roeck <groe...@gmail.com> On Behalf Of Guenter Roeck
> Sent: Wednesday, February 13, 2019 5:03 PM
> To: Andrew Lunn <and...@lunn.ch>; Ido Schimmel <ido...@mellanox.com>
> Cc: netdev@vger.kernel.org; da...@davemloft.net; Jiri Pirko
> <j...@mellanox.com>; mlxsw <ml...@mellanox.com>; Vadim Pasternak
> <vad...@mellanox.com>
> Subject: Re: [PATCH net-next 09/12] mlxsw: core: Extend hwmon interface with
> fan fault attribute
> 
> On 2/13/19 5:53 AM, Andrew Lunn wrote:
> > On Wed, Feb 13, 2019 at 11:28:53AM +0000, Ido Schimmel wrote:
> >> From: Vadim Pasternak <vad...@mellanox.com>
> >>
> >> Add new fan hwmon attribute for exposing fan faults (fault indication
> >> is read from Fan Out of Range Event Register).
> >>
> >> Signed-off-by: Vadim Pasternak <vad...@mellanox.com>
> >> Reviewed-by: Jiri Pirko <j...@mellanox.com>
> >> Signed-off-by: Ido Schimmel <ido...@mellanox.com>
> >
> > Hi Ido
> >
> > You should include the HWMON maintainer in the Cc: list.
> >
> > I would not be too surprised if he says to use
> > hwmon_device_register_with_info().
> >
> 
> I would ask to do that for new drivers, but this is is not a new driver.
> On top of that, I wasn't included in its initial review. Since I wasn't 
> involved, I
> have no idea what shape the driver is in, and for sure won't review it now (to
> retain my sanity).
> 
> Only comment I have is that using the _with_info API and using devm_ functions
> might simplify the driver a lot. I'll be happy to do a review if/when that is 
> done.
> 
> Guenter

Hi Guenter,

Thank you for your comments.

But, this patch adds one new FAN attribute to the existing infrastructure.
At the time mlxsw core_hwmon module has been submitted, the API
hwmon_device_register_with_info() was not available yet.
Of course in a new modules we are using this API, like in
our mlxreg-fan for example.

The same is relevant for the patch 10/12 from this series – it also extends
the existing infrastructure.
But there, even in case of a new code the config structure for
hwmon_device_register_with_info()  would be look like:
{
        /* 3 entries like below - for chip ambient temperatures (could be from 
1 to 3. */
        HWMON_F_INPUT | HWMON_T_HIGHEST | HWMON_T_RESET_HISTORY,
        ...
        /* 128 entries like below - for modules temperatures (could be from 16 
to 128. */
        HWMON_F_INPUT | HWMON_T_CRIT | HWMON_T_EMERGENCY, HWMON_T_FAULT | 
HWMON_T_LABEL,
        ...
        /* 64 entries like below - for interconnects temperatures (could be 
from 0 to 64). */
        HWMON_F_INPUT | HWMON_T_HIGHEST | HWMON_T_RESET_HISTORY | HWMON_T_LABEL,
        0
};

Means we'll have 195 lines for configuration description and in case future 
systems will
be equipped with the bigger number of port slots and/or with the bigger number 
of
interconnects devices, the below structure will require modification.
Modification will be not necessary, in case we'll keep configuration like it is 
now.

Regarding devm_ API - it has been used initially in core_hwmon module, but the 
in
commit (9b3bc7db759e) it has been removed. And it was a good reason for that.
Chip can be re-programmed after initialization in case driver determines it 
needs to
flash a new firmware version. In such case after re-programming driver will make
registration again and among the other stuff it will make new registration with
hwmon subsystem. And in case it 's registered with
hwmon subsystem using devm_hwmon_device_register_with_groups(), the old
hwmon device (registered before the flashing) was never unregistered and was
referencing stale data, resulting in a use-after free.

Reply via email to