On Fri, 2021-04-30 at 05:23 -0700, Srinivas Pandruvada wrote: > After commit 81ad4276b505 ("Thermal: Ignore invalid trip points") all > user_space governor notifications via RW trip point is broken in > intel > thermal drivers. This commits marks trip_points with value of 0 > during > call to thermal_zone_device_register() as invalid. RW trip points can > be > 0 as user space will set the correct trip temperature later. > > During driver init, x86_package_temp and all int340x drivers sets RW > trip > temperature as 0. This results in all these trips marked as invalid > by > the thermal core. > > To fix this initialize RW trips to THERMAL_TEMP_INVALID instead of 0. > Any chance that we can take care of this issue during 5.13-rc*? Thanks, Srinivas > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Srinivas Pandruvada < > srinivas.pandruvada@xxxxxxxxxxxxxxx> > --- > drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c | 4 > ++++ > drivers/thermal/intel/x86_pkg_temp_thermal.c | 2 +- > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git > a/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c > b/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c > index d1248ba943a4..62c0aa5d0783 100644 > --- a/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c > +++ b/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c > @@ -237,6 +237,8 @@ struct int34x_thermal_zone > *int340x_thermal_zone_add(struct acpi_device *adev, > if (ACPI_FAILURE(status)) > trip_cnt = 0; > else { > + int i; > + > int34x_thermal_zone->aux_trips = > kcalloc(trip_cnt, > sizeof(*int34x_thermal_zone- > >aux_trips), > @@ -247,6 +249,8 @@ struct int34x_thermal_zone > *int340x_thermal_zone_add(struct acpi_device *adev, > } > trip_mask = BIT(trip_cnt) - 1; > int34x_thermal_zone->aux_trip_nr = trip_cnt; > + for (i = 0; i < trip_cnt; ++i) > + int34x_thermal_zone->aux_trips[i] = > THERMAL_TEMP_INVALID; > } > > trip_cnt = int340x_thermal_read_trips(int34x_thermal_zone); > diff --git a/drivers/thermal/intel/x86_pkg_temp_thermal.c > b/drivers/thermal/intel/x86_pkg_temp_thermal.c > index 295742e83960..4d8edc61a78b 100644 > --- a/drivers/thermal/intel/x86_pkg_temp_thermal.c > +++ b/drivers/thermal/intel/x86_pkg_temp_thermal.c > @@ -166,7 +166,7 @@ static int sys_get_trip_temp(struct > thermal_zone_device *tzd, > if (thres_reg_value) > *temp = zonedev->tj_max - thres_reg_value * 1000; > else > - *temp = 0; > + *temp = THERMAL_TEMP_INVALID; > pr_debug("sys_get_trip_temp %d\n", *temp); > > return 0;