[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAJZ5v0iZVjbnJKfpzWsmz_j978FRpw+ocQKjUU+u2e2OZQOZMw@mail.gmail.com>
Date: Mon, 19 May 2025 21:10:48 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Zhang Rui <rui.zhang@...el.com>
Cc: rafael.j.wysocki@...el.com, zhangn1985@...look.com,
daniel.lezcano@...aro.org, linux-kernel@...r.kernel.org,
linux-pm@...r.kernel.org
Subject: Re: [PATCH] thermal: intel: x86_pkg_temp_thermal: Fix bogus trip temperature
On Mon, May 19, 2025 at 9:09 AM Zhang Rui <rui.zhang@...el.com> wrote:
>
> The tj_max value obtained from the Intel TCC library are in Celsius,
> whereas the thermal subsystem operates in milli-Celsius.
> This discrepancy leads to incorrect trip temperature calculations.
>
> Fix bogus trip temperature by converting tj_max to milli-Celsius Unit.
>
> Fixes: 8ef0ca4a177d ("Merge back other thermal control material for 6.3.")
> Signed-off-by: Zhang Rui <rui.zhang@...el.com>
> Reported-by: zhang ning <zhangn1985@...look.com>
> Closes: https://lore.kernel.org/all/TY2PR01MB3786EF0FE24353026293F5ACCD97A@TY2PR01MB3786.jpnprd01.prod.outlook.com/
> Tested-by: zhang ning <zhangn1985@...look.com>
> ---
> Commit 983eb370cb87 ("thermal/x86_pkg_temp_thermal: Use Intel TCC
> library") converts tj_max to use the standard API without switching the
> Unit, which is a bug. This was mitigated by the next commit 58374a3970a0
> ("thermal/x86_pkg_temp_thermal: Add support for handling dynamic tjmax")
> which uses the Celsius tj_max for failure check only.
>
> This may confuse the maintainer and the bug was introduced by commit
> 8ef0ca4a177d ("Merge back other thermal control material for 6.3."),
> when addressing the conflicts with commit d3ecaf17b586
> ("thermal/drivers/intel: Use generic thermal_zone_get_trip() function").
> ---
> drivers/thermal/intel/x86_pkg_temp_thermal.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/thermal/intel/x86_pkg_temp_thermal.c b/drivers/thermal/intel/x86_pkg_temp_thermal.c
> index 4894a26b1e4e..3fc679b6f11b 100644
> --- a/drivers/thermal/intel/x86_pkg_temp_thermal.c
> +++ b/drivers/thermal/intel/x86_pkg_temp_thermal.c
> @@ -330,6 +330,7 @@ static int pkg_temp_thermal_device_add(unsigned int cpu)
> tj_max = intel_tcc_get_tjmax(cpu);
> if (tj_max < 0)
> return tj_max;
> + tj_max *= 1000;
>
> zonedev = kzalloc(sizeof(*zonedev), GFP_KERNEL);
> if (!zonedev)
> --
Applied as 6.15-rc material, thanks!
Powered by blists - more mailing lists