* [PATCH] thermal: intel: int340x: Fix temperature selection around 0 C
@ 2026-08-26 15:31 Thorsten Blum
2026-08-28 20:20 ` srinivas pandruvada
0 siblings, 1 reply; 3+ messages in thread
From: Thorsten Blum @ 2026-08-26 15:31 UTC (permalink / raw)
To: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
Srinivas Pandruvada, Thorsten Blum, Stanislaw Gruszka
Cc: Rafael J. Wysocki, linux-pm, linux-kernel
Since commit 7251b9e8a007 ("thermal/intel: Fix intel_tcc_get_temp() to
support negative CPU temperature"), intel_tcc_get_temp() can report
negative temperatures.
proc_thermal_get_zone_temp() still uses *temp as the current maximum and
as an implicit "no reading yet" marker. However, this breaks when a CPU
reports 0 C, because a subsequent negative reading can overwrite it.
Use bool temp_valid to track whether a valid temperature has been read.
Initialize *temp with the first valid reading and only update it with
warmer readings.
Fixes: 7251b9e8a007 ("thermal/intel: Fix intel_tcc_get_temp() to support negative CPU temperature")
Cc: stable@vger.kernel.org # 6.3+
Signed-off-by: Thorsten Blum <blum@kernel.org>
---
.../intel/int340x_thermal/processor_thermal_device.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c b/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
index f80dbe2ca7e4..b0284c2e2e74 100644
--- a/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
+++ b/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
@@ -179,17 +179,21 @@ static int proc_thermal_get_zone_temp(struct thermal_zone_device *zone,
{
int cpu;
int curr_temp, ret;
-
- *temp = 0;
+ bool temp_valid = false;
for_each_online_cpu(cpu) {
ret = intel_tcc_get_temp(cpu, &curr_temp, false);
if (ret < 0)
return ret;
- if (!*temp || curr_temp > *temp)
+ if (!temp_valid || curr_temp > *temp) {
*temp = curr_temp;
+ temp_valid = true;
+ }
}
+ if (!temp_valid)
+ return -ENODATA;
+
*temp *= 1000;
return 0;
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] thermal: intel: int340x: Fix temperature selection around 0 C
2026-08-26 15:31 [PATCH] thermal: intel: int340x: Fix temperature selection around 0 C Thorsten Blum
@ 2026-08-28 20:20 ` srinivas pandruvada
2026-09-04 14:44 ` Rafael J. Wysocki (Intel)
0 siblings, 1 reply; 3+ messages in thread
From: srinivas pandruvada @ 2026-08-28 20:20 UTC (permalink / raw)
To: Thorsten Blum, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui,
Lukasz Luba, Stanislaw Gruszka
Cc: Rafael J. Wysocki, linux-pm, linux-kernel
On Wed, 2026-08-26 at 17:31 +0200, Thorsten Blum wrote:
> Since commit 7251b9e8a007 ("thermal/intel: Fix intel_tcc_get_temp()
> to
> support negative CPU temperature"), intel_tcc_get_temp() can report
> negative temperatures.
>
> proc_thermal_get_zone_temp() still uses *temp as the current maximum
> and
> as an implicit "no reading yet" marker. However, this breaks when a
> CPU
> reports 0 C, because a subsequent negative reading can overwrite it.
>
> Use bool temp_valid to track whether a valid temperature has been
> read.
> Initialize *temp with the first valid reading and only update it with
> warmer readings.
>
> Fixes: 7251b9e8a007 ("thermal/intel: Fix intel_tcc_get_temp() to
> support negative CPU temperature")
> Cc: stable@vger.kernel.org # 6.3+
> Signed-off-by: Thorsten Blum <blum@kernel.org>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> ---
> .../intel/int340x_thermal/processor_thermal_device.c | 10 +++++++-
> --
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git
> a/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
> b/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
> index f80dbe2ca7e4..b0284c2e2e74 100644
> ---
> a/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
> +++
> b/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
> @@ -179,17 +179,21 @@ static int proc_thermal_get_zone_temp(struct
> thermal_zone_device *zone,
> {
> int cpu;
> int curr_temp, ret;
> -
> - *temp = 0;
> + bool temp_valid = false;
>
> for_each_online_cpu(cpu) {
> ret = intel_tcc_get_temp(cpu, &curr_temp, false);
> if (ret < 0)
> return ret;
> - if (!*temp || curr_temp > *temp)
> + if (!temp_valid || curr_temp > *temp) {
> *temp = curr_temp;
> + temp_valid = true;
> + }
> }
>
> + if (!temp_valid)
> + return -ENODATA;
> +
> *temp *= 1000;
>
> return 0;
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] thermal: intel: int340x: Fix temperature selection around 0 C
2026-08-28 20:20 ` srinivas pandruvada
@ 2026-09-04 14:44 ` Rafael J. Wysocki (Intel)
0 siblings, 0 replies; 3+ messages in thread
From: Rafael J. Wysocki (Intel) @ 2026-09-04 14:44 UTC (permalink / raw)
To: srinivas pandruvada, Thorsten Blum
Cc: Daniel Lezcano, Zhang Rui, Lukasz Luba, Stanislaw Gruszka,
Rafael J. Wysocki, linux-pm, linux-kernel
On Fri, Aug 28, 2026 at 10:20 PM srinivas pandruvada
<srinivas.pandruvada@linux.intel.com> wrote:
>
> On Wed, 2026-08-26 at 17:31 +0200, Thorsten Blum wrote:
> > Since commit 7251b9e8a007 ("thermal/intel: Fix intel_tcc_get_temp()
> > to
> > support negative CPU temperature"), intel_tcc_get_temp() can report
> > negative temperatures.
> >
> > proc_thermal_get_zone_temp() still uses *temp as the current maximum
> > and
> > as an implicit "no reading yet" marker. However, this breaks when a
> > CPU
> > reports 0 C, because a subsequent negative reading can overwrite it.
> >
> > Use bool temp_valid to track whether a valid temperature has been
> > read.
> > Initialize *temp with the first valid reading and only update it with
> > warmer readings.
> >
> > Fixes: 7251b9e8a007 ("thermal/intel: Fix intel_tcc_get_temp() to
> > support negative CPU temperature")
> > Cc: stable@vger.kernel.org # 6.3+
> > Signed-off-by: Thorsten Blum <blum@kernel.org>
>
> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Applied as 7.4 material, thanks!
>
> > ---
> > .../intel/int340x_thermal/processor_thermal_device.c | 10 +++++++-
> > --
> > 1 file changed, 7 insertions(+), 3 deletions(-)
> >
> > diff --git
> > a/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
> > b/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
> > index f80dbe2ca7e4..b0284c2e2e74 100644
> > ---
> > a/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
> > +++
> > b/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
> > @@ -179,17 +179,21 @@ static int proc_thermal_get_zone_temp(struct
> > thermal_zone_device *zone,
> > {
> > int cpu;
> > int curr_temp, ret;
> > -
> > - *temp = 0;
> > + bool temp_valid = false;
> >
> > for_each_online_cpu(cpu) {
> > ret = intel_tcc_get_temp(cpu, &curr_temp, false);
> > if (ret < 0)
> > return ret;
> > - if (!*temp || curr_temp > *temp)
> > + if (!temp_valid || curr_temp > *temp) {
> > *temp = curr_temp;
> > + temp_valid = true;
> > + }
> > }
> >
> > + if (!temp_valid)
> > + return -ENODATA;
> > +
> > *temp *= 1000;
> >
> > return 0;
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-09-04 14:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-26 15:31 [PATCH] thermal: intel: int340x: Fix temperature selection around 0 C Thorsten Blum
2026-08-28 20:20 ` srinivas pandruvada
2026-09-04 14:44 ` Rafael J. Wysocki (Intel)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.