Re: [PATCH] hwmon: (cros_ec): Hide unconfigured temperature thresholds
Guenter Roeck <[email protected]> Tue, 28 Jul 2026 09:50:46 -0700
| Newsgroups | dev.linux.lists.chrome-platform,org.kernel.vger.linux-hwmon,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/28/26 09:38, Daniel Schaefer via B4 Relay wrote: > From: Daniel Schaefer <[email protected]> > > The EC reports a threshold of 0 K for host thresholds that are not > configured. Most Framework Computer systems don't use all thresholds. > E.g. temp_host_warn is left unset and stays at its -273 C / 0 K > default), see the EC code in zephyr/shim/src/thermal.c: > > DT_PROP_OR(node_id, temp_host_warn, -273) > > Previously these unconfigured thresholds were exposed as sysfs limits > that read back as -273.15 C, which userspace (e.g. s-tui) interpreted as > a real, permanently-exceeded limit. > > To avoid this we can hide the sysfs attribute for that threshold. > See truncated example below. > Is the limit just not configured or indeed unsupported ? If it is indeed unsupported, this is ok. If it is supported but not set (and it is configurable), this is not ok and will require a better solution. Guenter > Before: > >> sensors cros_ec-isa-000c > cpu_f75303@4d: +36.9°C (crit = +74.8°C, emerg = +84.8°C) > > After: > >> sensors cros_ec-isa-000c > cpu_f75303@4d: +36.9°C (high = -273.1°C, crit = +74.8°C) > (emerg = +84.8°C) > > Cc: Tzung-Bi Shih <[email protected]> > Cc: Thomas Weißschuh <[email protected]> > Cc: [email protected] > Signed-off-by: Daniel Schaefer <[email protected]> > --- > drivers/hwmon/cros_ec_hwmon.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/hwmon/cros_ec_hwmon.c b/drivers/hwmon/cros_ec_hwmon.c > index 03bfcc40bb7c..57158443dafe 100644 > --- a/drivers/hwmon/cros_ec_hwmon.c > +++ b/drivers/hwmon/cros_ec_hwmon.c > @@ -319,6 +319,7 @@ static umode_t cros_ec_hwmon_is_visible(const void *data, enum hwmon_sensor_type > u32 attr, int channel) > { > const struct cros_ec_hwmon_priv *priv = data; > + u32 threshold; > u16 speed; > > if (type == hwmon_fan) { > @@ -334,8 +335,17 @@ static umode_t cros_ec_hwmon_is_visible(const void *data, enum hwmon_sensor_type > } else if (type == hwmon_temp) { > if (priv->temp_sensor_names[channel]) { > if (cros_ec_hwmon_attr_is_temp_threshold(attr)) { > - if (priv->temp_threshold_supported) > - return 0444; > + if (!priv->temp_threshold_supported) > + return 0; > + > + if (cros_ec_hwmon_read_temp_threshold(priv->cros_ec, channel, > + cros_ec_hwmon_attr_to_thres(attr), > + &threshold) != 0) > + return 0; > + if (threshold == 0) > + return 0; > + > + return 0444; > } else { > return 0444; > } > > --- > base-commit: 58717b2a1365d06c8c64b72aa948541b53fe31eb > change-id: 20260729-crosec-hwmon-warn-default-9f3ca86ed809 > > Best regards,