On 3/13/21 12:32 AM, wangyugui wrote: > HWMON_T_MIN is not common in NVMe SSD, so drop all of them in nvme-hwmon. > > HWMON_T_MAX is only common in NVMe SSD Composite sensor, so drop them in other sensors. > > Before this patch(SSD: PM1733): > #sensors > nvme-pci-4300 > Adapter: PCI adapter > Composite: +49.9°C (low = -273.1°C, high = +71.8°C) > (crit = +84.8°C) > Sensor 1: +47.9°C (low = -273.1°C, high = +65261.8°C) > ERROR: Can't get value of subfeature temp3_min: I/O error > ERROR: Can't get value of subfeature temp3_max: I/O error > Sensor 2: +49.9°C (low = +0.0°C, high = +0.0°C) > > # cat /sys/class/nvme/nvme0/hwmon1/temp3_min > cat: /sys/class/nvme/nvme0/hwmon1/temp3_min: Input/output error > # cat /sys/class/nvme/nvme0/hwmon1/temp3_max > cat: /sys/class/nvme/nvme0/hwmon1/temp3_max: Input/output error > > After this patch(SSD: PM1733): > #sensors > nvme-pci-4300 > Adapter: PCI adapter > Composite: +48.9°C (high = +71.8°C, crit = +84.8°C) > Sensor 1: +46.9°C > Sensor 2: +48.9°C > Signed-off-by: missing. Either case, no. On one of my NVMEs, after setting the limits: nvme-pci-0100 Adapter: PCI adapter Composite: +29.9°C (low = -0.1°C, high = +76.8°C) (crit = +78.8°C) Sensor 1: +29.9°C (low = -0.1°C, high = +254.8°C) Sensor 2: +37.9°C (low = -0.1°C, high = +254.8°C) That it doesn't work on yours doesn't mean it needs to be disabled for all other NVMEs. Instead, we'll need to figure out how to correctly identify that limits for the second subfeature sensor are not supported, or what exactly the NVME complains about when trying to read the limits for the second subsensor. One possible solution might be to call nvme_get_temp_thresh() from nvme_hwmon_is_visible() and return 0 if the call returns an error. Also, the low/high limit readings on the composite sensor and on Sensor 1 only mean that limits are not configured. That is not a reason to disable the limit attributes entirely. One could instead write useful limits into those attributes. Guenter > --- > drivers/nvme/host/hwmon.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/nvme/host/hwmon.c b/drivers/nvme/host/hwmon.c > index 552dbc0..a93612f 100644 > --- a/drivers/nvme/host/hwmon.c > +++ b/drivers/nvme/host/hwmon.c > @@ -188,23 +188,23 @@ static umode_t nvme_hwmon_is_visible(const void *_data, > static const struct hwmon_channel_info *nvme_hwmon_info[] = { > HWMON_CHANNEL_INFO(chip, HWMON_C_REGISTER_TZ), > HWMON_CHANNEL_INFO(temp, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | HWMON_T_MAX | > HWMON_T_CRIT | HWMON_T_LABEL | HWMON_T_ALARM, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | > HWMON_T_LABEL, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | > HWMON_T_LABEL, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | > HWMON_T_LABEL, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | > HWMON_T_LABEL, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | > HWMON_T_LABEL, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | > HWMON_T_LABEL, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | > HWMON_T_LABEL, > - HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MIN | > + HWMON_T_INPUT | > HWMON_T_LABEL), > NULL > }; >