Patch "hwmon: (mlxreg-fan) Return zero speed for broken fan" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    hwmon: (mlxreg-fan) Return zero speed for broken fan

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     hwmon-mlxreg-fan-return-zero-speed-for-broken-fan.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 3f650004e4326c18a7538087d311d2a23a3680aa
Author: Vadim Pasternak <vadimp@xxxxxxxxxx>
Date:   Sun Feb 12 16:57:30 2023 +0200

    hwmon: (mlxreg-fan) Return zero speed for broken fan
    
    [ Upstream commit a1ffd3c46267ee5c807acd780e15df9bb692223f ]
    
    Currently for broken fan driver returns value calculated based on error
    code (0xFF) in related fan speed register.
    Thus, for such fan user gets fan{n}_fault to 1 and fan{n}_input with
    misleading value.
    
    Add check for fan fault prior return speed value and return zero if
    fault is detected.
    
    Fixes: 65afb4c8e7e4 ("hwmon: (mlxreg-fan) Add support for Mellanox FAN driver")
    Signed-off-by: Vadim Pasternak <vadimp@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230212145730.24247-1-vadimp@xxxxxxxxxx
    Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/hwmon/mlxreg-fan.c b/drivers/hwmon/mlxreg-fan.c
index bd8f5a3aaad9c..052c897a635d5 100644
--- a/drivers/hwmon/mlxreg-fan.c
+++ b/drivers/hwmon/mlxreg-fan.c
@@ -127,6 +127,12 @@ mlxreg_fan_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
 			if (err)
 				return err;
 
+			if (MLXREG_FAN_GET_FAULT(regval, tacho->mask)) {
+				/* FAN is broken - return zero for FAN speed. */
+				*val = 0;
+				return 0;
+			}
+
 			*val = MLXREG_FAN_GET_RPM(regval, fan->divider,
 						  fan->samples);
 			break;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux