Re: [PATCH] thermal: intel: Initialize RW trip to THERMAL_TEMP_INVALID

From: Daniel Lezcano
Date: Wed May 12 2021 - 14:03:36 EST


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