Update to the upstream version 2.5.10

- Update to 2.5.10
  the commits
  3144beaf22c4a (Update Panther Lake sysfs paths)
  be2049afdee80 (Add Panther Lake to the supported list)
  03b4a139388f6 (Check for target code ITMT3)
  were included in the 2.5.10 release.
- Include commits
  c921e802f6e49 (Compile issue on i586 for time_t print)
  352125763b8f9 (itmt3 support)
  to enable itmt3 support.

Resolves: RHEL-122868
Signed-off-by: Kate Hsuan <hpa@redhat.com>
This commit is contained in:
Kate Hsuan 2025-10-22 13:34:17 +08:00
parent 0cce4a1cb9
commit 2116bd9c3a
4 changed files with 143 additions and 2 deletions

View File

@ -0,0 +1,31 @@
From c921e802f6e494306850d4ac0e2237a2bde90fdb Mon Sep 17 00:00:00 2001
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date: Mon, 13 Oct 2025 11:22:21 -0700
Subject: [PATCH] Compile issue on i586 for time_t print
Refer to issue:
https://github.com/intel/thermal_daemon/issues/488
time_t print with format %jd is a problem. The fix was added for
i386 compile but that broke i586.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
src/thd_gddv.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/thd_gddv.cpp b/src/thd_gddv.cpp
index 7d483462..d5348259 100644
--- a/src/thd_gddv.cpp
+++ b/src/thd_gddv.cpp
@@ -460,8 +460,8 @@ void cthd_gddv::dump_apct() {
condition_set[j].target, condition_set[j].device.c_str(),
cond_name.c_str(), comp_str.c_str(),
condition_set[j].argument, op_str.c_str(),
- condition_set[j].time_comparison, condition_set[j].time,
- condition_set[j].state, condition_set[j].state_entry_time);
+ condition_set[j].time_comparison, (intmax_t)condition_set[j].time,
+ condition_set[j].state, (intmax_t)condition_set[j].state_entry_time);
}
}
thd_log_info("..apct dump end..\n");

View File

@ -0,0 +1,104 @@
From 352125763b8f9866cd9318c1c2a70a5dcf841b20 Mon Sep 17 00:00:00 2001
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date: Wed, 15 Oct 2025 20:00:33 -0700
Subject: [PATCH] itmt3 support
Added ITMT3 table parsing. The elements used here are same as before
but there is a structure change.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
src/thd_gddv.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++
src/thd_gddv.h | 1 +
2 files changed, 61 insertions(+)
diff --git a/src/thd_gddv.cpp b/src/thd_gddv.cpp
index d5348259..36156e47 100644
--- a/src/thd_gddv.cpp
+++ b/src/thd_gddv.cpp
@@ -601,6 +601,58 @@ struct psvt* cthd_gddv::find_def_psvt() {
return NULL;
}
+struct __attribute__((packed)) itmt3_header {
+ uint32_t reserved;
+ uint64_t revision;
+};
+
+struct __attribute__((packed)) itmt3 {
+ char target[64];
+ uint64_t temp;
+ uint64_t reserved_1;
+ char pl1_min[64];
+ char pl1_max[64];
+ char reserved_2[88];
+};
+
+int cthd_gddv::parse_itmt3(char *name, char *buf, unsigned int len) {
+ unsigned int offset = 0;
+ struct itmt itmt;
+
+ if (name == NULL)
+ itmt.name = "Default";
+ else
+ itmt.name = name;
+
+ if (len < sizeof(struct itmt3_header))
+ return THD_ERROR;
+
+ offset += sizeof(struct itmt3_header);
+
+ if (len - offset < sizeof(struct itmt3))
+ return THD_ERROR;
+
+ while (offset < len) {
+ struct itmt_entry itmt_entry;
+ struct itmt3 *entry = (struct itmt3 *)&buf[offset];
+
+ if (len - offset < sizeof(struct itmt3))
+ return THD_ERROR;
+
+ itmt_entry.target = entry->target;
+ itmt_entry.trip_point = entry->temp;
+ itmt_entry.pl1_min = entry->pl1_min;
+ itmt_entry.pl1_max = entry->pl1_max;
+
+ offset += sizeof(struct itmt3);
+ itmt.itmt_entries.push_back(itmt_entry);
+ }
+
+ itmts.push_back(itmt);
+
+ return 0;
+}
+
int cthd_gddv::parse_itmt(char *name, char *buf, int len) {
int offset = 0;
int version = get_uint64(buf, &offset);
@@ -920,6 +972,14 @@ int cthd_gddv::parse_gddv_key(char *buf, int size, int *end_offset) {
parse_apat(val, vallength);
}
+ if (type && strncmp(type, "itmt3", strlen("itmt3")) == 0) {
+ thd_log_debug("Found ITMT 3\n");
+ if (point == NULL)
+ parse_itmt3(name, val, vallength);
+ else
+ parse_itmt3(point, val, vallength);
+ }
+
if (type && strcmp(type, "itmt") == 0) {
if (point == NULL)
parse_itmt(name, val, vallength);
diff --git a/src/thd_gddv.h b/src/thd_gddv.h
index ecbe3de9..415339c4 100644
--- a/src/thd_gddv.h
+++ b/src/thd_gddv.h
@@ -211,6 +211,7 @@ class cthd_gddv {
int parse_ppcc(char *name, char *ppcc, int len);
int parse_psvt(char *name, char *psvt, int len);
int parse_itmt(char *name, char *itmt, int len);
+ int parse_itmt3(char *name, char *itmt, unsigned int len);
int parse_trt(char *trt, int len);
void parse_idsp(char *name, char *idsp, int len);
void parse_trip_point(char *name, char *type, char *val, int len);

View File

@ -1 +1 @@
SHA512 (thermald-2.5.9.tar.gz) = 0541cf490d9a97544b5c10a036a0d8219410c4451d0471b3896a62a743509cd41f5c9b862d81708a2c68603fbc0056268612d84089ef93308b91712c6d26854b
SHA512 (thermald-2.5.10.tar.gz) = a1265e6f7c940a0651d5652c81e13ec1d16c8836eb80622f3d51dac9c054b96d4d78c0988162cfa574578735804b3ee8d1c5eb2c1163ae516bd263ec5d6e2328

View File

@ -3,7 +3,7 @@
%bcond qt %[%{undefined rhel} || 0%{?rhel} < 10]
Name: thermald
Version: 2.5.9
Version: 2.5.10
Release: %autorelease
Summary: Thermal Management daemon
@ -12,6 +12,12 @@ URL: https://github.com/intel/%{pkgname}
Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
# Patches
# Fix compile issue on i586 for time_t print
# https://github.com/intel/thermal_daemon/commit/0960193970b74a429a4506cf2179643198df38d8.patch
Patch0001: 0960193970b74a429a4506cf2179643198df38d8.patch
# The itmt3 implementation
# https://github.com/intel/thermal_daemon/commit/352125763b8f9866cd9318c1c2a70a5dcf841b20.patch
Patch0002: 352125763b8f9866cd9318c1c2a70a5dcf841b20.patch
# No cpuid.h on other arches.
ExclusiveArch: %{ix86} x86_64