Message ID | 2731410.mvXUDI8C0e@kreacher (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | [v2] thermal: sysfs: Make trip hysteresis writable along with trip temperature | expand |
On 31/01/2024 19:44, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > Trip point temperature can be modified via sysfs if > CONFIG_THERMAL_WRITABLE_TRIPS is enabled and the thermal > zone creator requested that the given trip be writable > in the writable trips mask passed to the registration > function. > > However, trip point hysteresis is treated differently - it is only > writable if the thermal zone has a .set_trip_hyst() operation defined > and neither CONFIG_THERMAL_WRITABLE_TRIPS, nor the writable trips mask > supplied by the zone creator has any bearing on this. That is > inconsistent and confusing, and it generally does not meet user > expectations. > > For this reason, modify create_trip_attrs() to handle trip point > hysteresis in the same way as trip point temperature, so they both > are writable at the same time regardless of what trip point operations > are defined for the thermal zone. > > Link: https://lore.kernel.org/linux-pm/20240106191502.29126-1-quic_manafm@quicinc.com > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > --- Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
On Thu, Feb 8, 2024 at 3:42 PM Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > > On 31/01/2024 19:44, Rafael J. Wysocki wrote: > > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > > > Trip point temperature can be modified via sysfs if > > CONFIG_THERMAL_WRITABLE_TRIPS is enabled and the thermal > > zone creator requested that the given trip be writable > > in the writable trips mask passed to the registration > > function. > > > > However, trip point hysteresis is treated differently - it is only > > writable if the thermal zone has a .set_trip_hyst() operation defined > > and neither CONFIG_THERMAL_WRITABLE_TRIPS, nor the writable trips mask > > supplied by the zone creator has any bearing on this. That is > > inconsistent and confusing, and it generally does not meet user > > expectations. > > > > For this reason, modify create_trip_attrs() to handle trip point > > hysteresis in the same way as trip point temperature, so they both > > are writable at the same time regardless of what trip point operations > > are defined for the thermal zone. > > > > Link: https://lore.kernel.org/linux-pm/20240106191502.29126-1-quic_manafm@quicinc.com > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > --- > > Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org> Thanks, but I need to withdraw this one, because there are drivers that actively don't want their trip points' hysteresis to be adjusted via sysfs, so I'm now working on a patch series that will tackle this in a more systematic way.
Index: linux-pm/drivers/thermal/thermal_sysfs.c =================================================================== --- linux-pm.orig/drivers/thermal/thermal_sysfs.c +++ linux-pm/drivers/thermal/thermal_sysfs.c @@ -474,7 +474,8 @@ static int create_trip_attrs(struct ther tz->trip_hyst_attrs[indx].name; tz->trip_hyst_attrs[indx].attr.attr.mode = S_IRUGO; tz->trip_hyst_attrs[indx].attr.show = trip_point_hyst_show; - if (tz->ops->set_trip_hyst) { + if (IS_ENABLED(CONFIG_THERMAL_WRITABLE_TRIPS) && + mask & (1 << indx)) { tz->trip_hyst_attrs[indx].attr.attr.mode |= S_IWUSR; tz->trip_hyst_attrs[indx].attr.store = trip_point_hyst_store;