On 12/05/2021 17:52, Srinivas Pandruvada wrote: > 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*? Yes, I will take care of it >> 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; > > -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog