mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
thermal: intel: int340x: Fix temperature selection around 0 C
Since commit7251b9e8a0("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:7251b9e8a0("thermal/intel: Fix intel_tcc_get_temp() to support negative CPU temperature") Cc: 6.3+ <stable@vger.kernel.org> # 6.3+ Signed-off-by: Thorsten Blum <blum@kernel.org> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Link: https://patch.msgid.link/20260826153144.299746-3-blum@kernel.org Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
3a6a73ea98
commit
e56e2b49c6
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user