From 2116bd9c3ab4491d0bf8499ae8a187007fd239a3 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Wed, 22 Oct 2025 13:34:17 +0800 Subject: [PATCH] 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 --- ...193970b74a429a4506cf2179643198df38d8.patch | 31 ++++++ ...25763b8f9866cd9318c1c2a70a5dcf841b20.patch | 104 ++++++++++++++++++ sources | 2 +- thermald.spec | 8 +- 4 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 0960193970b74a429a4506cf2179643198df38d8.patch create mode 100644 352125763b8f9866cd9318c1c2a70a5dcf841b20.patch diff --git a/0960193970b74a429a4506cf2179643198df38d8.patch b/0960193970b74a429a4506cf2179643198df38d8.patch new file mode 100644 index 0000000..5c73c19 --- /dev/null +++ b/0960193970b74a429a4506cf2179643198df38d8.patch @@ -0,0 +1,31 @@ +From c921e802f6e494306850d4ac0e2237a2bde90fdb Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +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 +--- + 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"); diff --git a/352125763b8f9866cd9318c1c2a70a5dcf841b20.patch b/352125763b8f9866cd9318c1c2a70a5dcf841b20.patch new file mode 100644 index 0000000..d0729d4 --- /dev/null +++ b/352125763b8f9866cd9318c1c2a70a5dcf841b20.patch @@ -0,0 +1,104 @@ +From 352125763b8f9866cd9318c1c2a70a5dcf841b20 Mon Sep 17 00:00:00 2001 +From: Srinivas Pandruvada +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 +--- + 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); diff --git a/sources b/sources index daaabcc..2183914 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (thermald-2.5.9.tar.gz) = 0541cf490d9a97544b5c10a036a0d8219410c4451d0471b3896a62a743509cd41f5c9b862d81708a2c68603fbc0056268612d84089ef93308b91712c6d26854b +SHA512 (thermald-2.5.10.tar.gz) = a1265e6f7c940a0651d5652c81e13ec1d16c8836eb80622f3d51dac9c054b96d4d78c0988162cfa574578735804b3ee8d1c5eb2c1163ae516bd263ec5d6e2328 diff --git a/thermald.spec b/thermald.spec index dbb106a..4ed9650 100644 --- a/thermald.spec +++ b/thermald.spec @@ -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