commit f47811a4c79a41b848e77e05b8b2326a3fc66023 Author: MSVSphere Packaging Team Date: Fri Oct 25 19:40:20 2024 +0300 import thermald-2.5.7-4.el10 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ebf91f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/thermald-2.5.7.tar.gz diff --git a/.thermald.metadata b/.thermald.metadata new file mode 100644 index 0000000..535d8b1 --- /dev/null +++ b/.thermald.metadata @@ -0,0 +1 @@ +9f25aa76ef217902dcab53f225e7d6953da55e5f SOURCES/thermald-2.5.7.tar.gz diff --git a/SOURCES/441.patch b/SOURCES/441.patch new file mode 100644 index 0000000..4e53e58 --- /dev/null +++ b/SOURCES/441.patch @@ -0,0 +1,846 @@ +From 2ffbdf7cabe94a79eab77ba3ddeb8fd0506a93f7 Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Tue, 16 Apr 2024 16:53:17 +0800 +Subject: [PATCH 1/4] main: remove deprecated API + +g_type_init() was deprecated since Glib 2.36. +--- + src/main.cpp | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/src/main.cpp b/src/main.cpp +index 34715cb8..135fa3ff 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -322,9 +322,6 @@ int main(int argc, char *argv[]) { + g_unix_signal_add (SIGTERM, G_SOURCE_FUNC (sig_int_handler), NULL); + } + +- // Initialize the GType/GObject system +- g_type_init(); +- + // Create a main loop that will dispatch callbacks + g_main_loop = g_main_loop_new(NULL, FALSE); + if (g_main_loop == NULL) { + +From 4aeed1e59a2901d95aefe881673842b9785c8cfa Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Tue, 16 Apr 2024 16:56:31 +0800 +Subject: [PATCH 2/4] thd_engine_default: Drop modem support + +Don't new a intel_modem object. +--- + src/thd_engine_default.cpp | 16 +--------------- + 1 file changed, 1 insertion(+), 15 deletions(-) + +diff --git a/src/thd_engine_default.cpp b/src/thd_engine_default.cpp +index a81ecb39..330cc51d 100644 +--- a/src/thd_engine_default.cpp ++++ b/src/thd_engine_default.cpp +@@ -48,9 +48,6 @@ + #include "thd_sensor_rapl_power.h" + #include "thd_zone_rapl_power.h" + +-#ifdef GLIB_SUPPORT +-#include "thd_cdev_modem.h" +-#endif + + // Default CPU cooling devices, which are not part of thermal sysfs + // Since non trivial initialization is not supported, we init all fields even if they are not needed +@@ -622,18 +619,7 @@ int cthd_engine_default::add_replace_cdev(cooling_dev_t *config) { + } + if (!cdev_present) { + // create new +- if (config->type_string.compare("intel_modem") == 0) { +-#ifdef GLIB_SUPPORT +- /* +- * Add Modem as cdev +- * intel_modem is a modem identifier across all intel platforms. +- * The differences between the modems of various intel platforms +- * are to be taken care in the cdev implementation. +- */ +- cdev = new cthd_cdev_modem(current_cdev_index, config->path_str); +-#endif +- } else +- cdev = new cthd_gen_sysfs_cdev(current_cdev_index, config->path_str); ++ cdev = new cthd_gen_sysfs_cdev(current_cdev_index, config->path_str); + if (!cdev) + return THD_ERROR; + cdev->set_cdev_type(config->type_string); + +From 7fa7a2e0408d8efe570139c48c32afefc84480e9 Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Tue, 16 Apr 2024 17:14:16 +0800 +Subject: [PATCH 3/4] build: remove thd_cdev_modem and dbus-glib + +thd_cdev_modem.cpp and .h were dropped. Moreover, dbus-glib was +dropped from the build scripts. +--- + Makefile.am | 12 +- + configure.ac | 12 +- + src/thd_cdev_modem.cpp | 521 ----------------------------------------- + src/thd_cdev_modem.h | 64 ----- + src/thermald.h | 3 - + 5 files changed, 3 insertions(+), 609 deletions(-) + delete mode 100644 src/thd_cdev_modem.cpp + delete mode 100644 src/thd_cdev_modem.h + +diff --git a/Makefile.am b/Makefile.am +index dd2ef103..996388a3 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -5,9 +5,9 @@ SUBDIRS = . docs data + ACLOCAL_AMFLAGS = + + # Global C Flags +-AM_CFLAGS = ${DBUS_CFLAGS} ++AM_CFLAGS = ${GLIB_CFLAGS} + AM_CXXFLAGS = \ +- ${DBUS_CFLAGS} \ ++ $(GLIB_CFLAGS) \ + $(XML_CFLAGS) \ + $(UPOWER_CFLAGS) \ + $(EVDEV_CFLAGS) \ +@@ -30,7 +30,6 @@ thermald_CPPFLAGS = \ + + thermald_includedir = @top_srcdir@ + thermald_LDADD = \ +- $(DBUS_LIBS) \ + $(GLIB_LIBS) \ + $(LIBNL_LIBS) \ + $(LIBM) \ +@@ -39,9 +38,6 @@ thermald_LDADD = \ + $(UPOWER_LIBS) \ + $(EVDEV_LIBS) + +-BUILT_SOURCES = \ +- thd_dbus_interface.h \ +- thermald-resource.c + + thermald_SOURCES = \ + src/main.cpp \ +@@ -74,7 +70,6 @@ thermald_SOURCES = \ + src/thd_cdev_rapl_dram.cpp \ + src/thd_cpu_default_binding.cpp \ + src/thd_cdev_backlight.cpp \ +- src/thd_cdev_modem.cpp \ + src/thd_int3400.cpp \ + src/thd_cdev_kbl_amdgpu.cpp \ + src/thd_sensor_kbl_amdgpu_power.cpp \ +@@ -93,9 +88,6 @@ thermald_SOURCES = \ + man5_MANS = man/thermal-conf.xml.5 + man8_MANS = man/thermald.8 + +-thd_dbus_interface.h: $(top_srcdir)/src/thd_dbus_interface.xml +- $(AM_V_GEN) dbus-binding-tool --prefix=thd_dbus_interface --mode=glib-server --output=$@ $< +- + thermald-resource.c: $(top_srcdir)/thermald-resource.gresource.xml + $(AM_V_GEN) glib-compile-resources --generate-source thermald-resource.gresource.xml + +diff --git a/configure.ac b/configure.ac +index 334f38fe..b72019e4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -62,20 +62,10 @@ GETTEXT_PACKAGE=thermald + AC_SUBST(GETTEXT_PACKAGE) + AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package]) + +-dnl +-dnl Checks for new dbus-glib property access function +-dnl +-AC_CHECK_LIB([dbus-glib-1], [dbus_glib_global_set_disable_legacy_property_access], ac_have_dg_prop="1", ac_have_dg_prop="0") +-AC_DEFINE_UNQUOTED(HAVE_DBUS_GLIB_DISABLE_LEGACY_PROP_ACCESS, $ac_have_dg_prop, [Define if you have a dbus-glib with dbus_glib_global_set_disable_legacy_property_access()]) +- +-PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.1 dbus-glib-1 >= 0.94) +-AC_SUBST(DBUS_CFLAGS) +-AC_SUBST(DBUS_LIBS) +- + GLIB_VERSION_DEFINES="-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26" + DBUS_CFLAGS="$DBUS_CFLAGS $GLIB_VERSION_DEFINES" + +-PKG_CHECK_MODULES(GLIB, gio-unix-2.0 >= 2.22 gmodule-2.0) ++PKG_CHECK_MODULES(GLIB, gio-unix-2.0 >= 2.22 gmodule-2.0 glib-2.0) + GLIB_CFLAGS="$GLIB_CFLAGS $GLIB_VERSION_DEFINES" + AC_SUBST(GLIB_CFLAGS) + AC_SUBST(GLIB_LIBS) +diff --git a/src/thd_cdev_modem.cpp b/src/thd_cdev_modem.cpp +deleted file mode 100644 +index 6c3ff6cb..00000000 +--- a/src/thd_cdev_modem.cpp ++++ /dev/null +@@ -1,521 +0,0 @@ +-/* +- * thd_cdev_modem.cpp: thermal modem cooling implementation +- * Copyright (c) 2016, Intel Corporation. +- * +- * This program is free software; you can redistribute it and/or modify it +- * under the terms and conditions of the GNU General Public License +- * version 2 or later as published by the Free Software Foundation. +- * +- * This program is distributed in the hope it will be useful, but WITHOUT +- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +- * more details. +- * +- * +- * Author Name +- * +- */ +- +-/* +- * Modem Throttling Levels: +- * 0 - Disabled or No Throttling +- * 1 - Enabled +- */ +- +-#include +-#include +-#include +- +-#include "thd_cdev_modem.h" +- +-int cthd_cdev_modem::parse_ofono_property_changed_signal(DBusMessage* msg, +- const char* interface, const char* signal, const char* property, +- dbus_bool_t* new_value) { +- DBusMessageIter iter; +- DBusMessageIter var; +- +- char *property_name; +- +- dbus_message_iter_init(msg, &iter); +- +- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) { +- thd_log_error("Invalid arguments in %s[%s]", interface, signal); +- return THD_ERROR; +- } +- +- dbus_message_iter_get_basic(&iter, &property_name); +- +- if (strlen(property) != strlen(property_name) +- || strcmp(property, property_name)) { +- thd_log_error("Unsupported property : %s", property_name); +- return THD_ERROR; +- } +- +- dbus_message_iter_next(&iter); +- +- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) { +- thd_log_error("Invalid arguments in %s[%s(%s)]", interface, signal, +- property); +- return THD_ERROR; +- } +- +- dbus_message_iter_recurse(&iter, &var); +- +- if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_BOOLEAN) { +- thd_log_error("Invalid arguments in %s[%s(%s)]", interface, signal, +- property); +- return THD_ERROR; +- } +- +- dbus_message_iter_get_basic(&var, new_value); +- +- return THD_SUCCESS; +-} +- +-DBusHandlerResult cthd_cdev_modem::ofono_signal_handler(DBusConnection *conn, +- DBusMessage *msg, void *user_data) { +- DBusError error; +- cthd_cdev_modem *cdev_modem = (cthd_cdev_modem *) user_data; +- +- const char *signal = "PropertyChanged"; +- +- dbus_error_init(&error); +- +- if (dbus_message_is_signal(msg, THERMAL_MANAGEMENT_INTERFACE, signal)) { +- dbus_bool_t throttling; +- +- if (parse_ofono_property_changed_signal(msg, +- THERMAL_MANAGEMENT_INTERFACE, signal, "TransmitPowerThrottling", +- &throttling) != THD_SUCCESS) +- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; +- +- if (cdev_modem) { +- cdev_modem->set_throttling_state(throttling ? true : false); +- +- cdev_modem->update_online_state(conn); +- cdev_modem->update_throttling_state(conn); +- thd_log_debug("TransmitPowerThrottling Initiated"); +- } +- +- return DBUS_HANDLER_RESULT_HANDLED; +- } else if (dbus_message_is_signal(msg, MODEM_INTERFACE, signal)) { +- dbus_bool_t online; +- +- if (parse_ofono_property_changed_signal(msg, MODEM_INTERFACE, signal, +- "Online", &online) != THD_SUCCESS) +- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; +- +- if (cdev_modem) { +- cdev_modem->set_online_state(online ? true : false); +- cdev_modem->update_online_state(conn); +- cdev_modem->update_throttling_state(conn); +- thd_log_debug("Modem online Initiated"); +- } +- +- return DBUS_HANDLER_RESULT_HANDLED; +- } +- +- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; +-} +- +-cthd_cdev_modem::cthd_cdev_modem(unsigned int _index, std::string control_path) : +- cthd_cdev(_index, "") { +- throttling = false; +- online = false; +- +- if (control_path.length() > 0) +- modem_path.assign(control_path); +- else +- modem_path.assign("/ril_0"); +-} +- +-int cthd_cdev_modem::get_modem_property(DBusConnection* conn, +- const char* interface, const char* property, bool* value) { +- DBusError error; +- DBusMessage *msg; +- DBusMessage *reply; +- DBusMessageIter array; +- DBusMessageIter dict; +- int rc = THD_ERROR; +- +- dbus_error_init(&error); +- +- msg = dbus_message_new_method_call("org.ofono", modem_path.c_str(), +- interface, "GetProperties"); +- if (msg == NULL) { +- thd_log_error("Error creating D-Bus message for GetProperties " +- "under %s : %s\n", modem_path.c_str(), error.message); +- return rc; +- } +- +- reply = dbus_connection_send_with_reply_and_block(conn, msg, 10000, &error); +- if (dbus_error_is_set(&error)) { +- thd_log_error("Error invoking GetProperties under %s : %s\n", +- modem_path.c_str(), error.message); +- dbus_error_free(&error); +- dbus_message_unref(msg); +- return rc; +- } +- +- dbus_message_unref(msg); +- +- dbus_message_iter_init(reply, &array); +- if (dbus_message_iter_get_arg_type(&array) != DBUS_TYPE_ARRAY) { +- thd_log_error("GetProperties return type not array under %s!\n", +- modem_path.c_str()); +- dbus_message_unref(reply); +- return rc; +- } +- +- dbus_message_iter_recurse(&array, &dict); +- +- while (dbus_message_iter_get_arg_type(&dict) == DBUS_TYPE_DICT_ENTRY) { +- DBusMessageIter key, var; +- +- char *property_name; +- +- dbus_message_iter_recurse(&dict, &key); +- +- if (dbus_message_iter_get_arg_type(&key) != DBUS_TYPE_STRING) { +- thd_log_error("GetProperties dict key type not string " +- "under %s!\n", modem_path.c_str()); +- dbus_message_unref(reply); +- return rc; +- } +- +- dbus_message_iter_get_basic(&key, &property_name); +- +- /* Check if, this is the property we are interested in */ +- if (strlen(property) != strlen(property_name) +- || strcmp(property, property_name)) { +- dbus_message_iter_next(&dict); +- continue; +- } +- +- dbus_message_iter_next(&key); +- +- if (dbus_message_iter_get_arg_type(&key) != DBUS_TYPE_VARIANT) { +- thd_log_error("GetProperties dict value type not " +- "variant under %s!\n", modem_path.c_str()); +- dbus_message_unref(reply); +- return rc; +- } +- +- dbus_message_iter_recurse(&key, &var); +- +- if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_BOOLEAN) { +- thd_log_error("GetProperties dict value(1) type not " +- "boolean under %s!\n", modem_path.c_str()); +- dbus_message_unref(reply); +- return rc; +- } +- +- dbus_message_iter_get_basic(&var, value); +- rc = THD_SUCCESS; +- break; +- } +- +- dbus_message_unref(reply); +- +- return rc; +-} +- +-int cthd_cdev_modem::update_online_state(DBusConnection* conn) { +- bool online_state; +- +- if (get_modem_property(conn, MODEM_INTERFACE, "Online", +- &online_state) == THD_SUCCESS) { +- online = online_state; +- return THD_SUCCESS; +- } +- +- return THD_ERROR; +-} +- +-int cthd_cdev_modem::update_throttling_state(DBusConnection *conn) { +- bool enabled; +- +- if (get_modem_property(conn, THERMAL_MANAGEMENT_INTERFACE, +- "TransmitPowerThrottling", &enabled) == THD_SUCCESS) { +- throttling = enabled; +- return THD_SUCCESS; +- } +- +- return THD_ERROR; +-} +- +-int cthd_cdev_modem::update() { +- DBusConnection *conn; +- DBusError error; +- std::string thermal_management_dbus_rule, modem_dbus_rule; +- +- /* Modem has only 2 throttling states, enabled or disabled */ +- min_state = MODEM_THROTTLING_DISABLED; +- max_state = MODEM_THROTTLING_ENABLED; +- +- dbus_error_init(&error); +- +- conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error); +- if (dbus_error_is_set(&error)) { +- thd_log_error("Error connecting to system bus: %s:\n", error.message); +- dbus_error_free(&error); +- return THD_ERROR; +- } +- +- dbus_connection_setup_with_g_main(conn, NULL); +- +- /* +- * Add a match rule as below ... +- * Type : Signal +- * From-Interface : org.ofono.Modem +- * Signal Name : PropertyChanged +- * Property Name : Online +- */ +- modem_dbus_rule.append("type='signal'"); +- modem_dbus_rule.append(",path='").append(modem_path).append("'"); +- modem_dbus_rule.append(",interface='" MODEM_INTERFACE "'"); +- modem_dbus_rule.append(",member='PropertyChanged'"); +- modem_dbus_rule.append(",arg0='Online'"); +- +- dbus_bus_add_match(conn, modem_dbus_rule.c_str(), &error); +- if (dbus_error_is_set(&error)) { +- thd_log_error("Error adding D-Bus rule \"%s\" : %s", +- modem_dbus_rule.c_str(), error.message); +- dbus_error_free(&error); +- return THD_ERROR; +- } +- +- /* +- * Add a match rule as below ... +- * Type : Signal +- * From-Interface : org.ofono.sofia3gr.ThermalManagement +- * Signal Name : PropertyChanged +- * Property Name : TransmitPowerThrottling +- */ +- thermal_management_dbus_rule.append("type='signal'"); +- thermal_management_dbus_rule.append(",path='").append(modem_path).append( +- "'"); +- thermal_management_dbus_rule.append(",interface='").append( +- THERMAL_MANAGEMENT_INTERFACE).append("'"); +- thermal_management_dbus_rule.append(",member='PropertyChanged'"); +- thermal_management_dbus_rule.append(",arg0='TransmitPowerThrottling'"); +- +- dbus_bus_add_match(conn, thermal_management_dbus_rule.c_str(), &error); +- if (dbus_error_is_set(&error)) { +- thd_log_error("Error adding D-Bus rule \"%s\" : %s", +- thermal_management_dbus_rule.c_str(), error.message); +- dbus_error_free(&error); +- return THD_ERROR; +- } +- +- /* Register a handler for the above added rules */ +- dbus_connection_add_filter(conn, ofono_signal_handler, this, NULL); +- +- return THD_SUCCESS; +-} +- +-int cthd_cdev_modem::get_curr_state() { +- +- if (!online) { +- update_throttling_state(); +- } +- +- if (throttling) { +- curr_state = MODEM_THROTTLING_ENABLED; +- thd_log_debug("Modem currently under throttling\n"); +- } else { +- curr_state = MODEM_THROTTLING_DISABLED; +- thd_log_debug("Modem currently not under throttling\n"); +- } +- +- return curr_state; +-} +- +-void cthd_cdev_modem::update_throttling_state() { +- +- DBusConnection *conn; +- DBusError error; +- +- dbus_error_init(&error); +- conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error); +- +- if (dbus_error_is_set(&error)) { +- thd_log_error("Error: %s", error.message); +- dbus_error_free(&error); +- return; +- } +- +- dbus_connection_setup_with_g_main(conn, NULL); +- +- if (is_interface_up(conn) == THD_ERROR) { +- thd_log_warn("Thermal Interface not ready\n"); +- return; +- } +- +- update_online_state(conn); +- update_throttling_state(conn); +- +-} +- +-int cthd_cdev_modem::is_interface_up(DBusConnection *conn) { +- +- DBusError error; +- DBusMessage *msg; +- DBusMessage *reply; +- int rc = THD_ERROR; +- +- dbus_error_init(&error); +- +- msg = dbus_message_new_method_call("org.ofono", modem_path.c_str(), +- THERMAL_MANAGEMENT_INTERFACE, "GetProperties"); +- +- if (msg == NULL) { +- thd_log_error("Error creating D-Bus message for GetProperties " +- "under %s : %s\n", modem_path.c_str(), error.message); +- return rc; +- } +- +- reply = dbus_connection_send_with_reply_and_block(conn, msg, 10000, &error); +- +- if (dbus_error_is_set(&error)) { +- dbus_error_free(&error); +- dbus_message_unref(msg); +- return rc; +- } +- +- dbus_message_unref(msg); +- dbus_message_unref(reply); +- +- return THD_SUCCESS; +-} +- +-void cthd_cdev_modem::set_curr_state(int state, int arg) { +- +- DBusConnection *conn; +- DBusError error; +- +- dbus_error_init(&error); +- conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error); +- +- if (dbus_error_is_set(&error)) { +- thd_log_error("Error : %s", error.message); +- dbus_error_free(&error); +- return; +- } +- +- dbus_connection_setup_with_g_main(conn, NULL); +- +- update_online_state(conn); +- +- switch (state) { +- case MODEM_THROTTLING_ENABLED: +- if (!online) +- thd_log_debug("Modem not yet online, hence " +- "ignoring throttle request\n"); +- else if (throttling) +- thd_log_debug("Modem already throttled, hence " +- "ignoring throttle request\n"); +- else { +- thd_log_debug("Initiating modem throttling\n"); +- throttle_modem(state); +- update_throttling_state(conn); +- } +- break; +- +- case MODEM_THROTTLING_DISABLED: +- if (!online) +- thd_log_debug("Modem not yet online, hence " +- "ignoring de-throttle request\n"); +- else if (!throttling) +- thd_log_debug("Modem already de-throttled, hence " +- "ignoring de-throttle request\n"); +- else { +- thd_log_debug("Initiating modem de-throttling\n"); +- throttle_modem(state); +- update_throttling_state(conn); +- } +- break; +- } +-} +- +-int cthd_cdev_modem::get_max_state() { +- return max_state; +-} +- +-int cthd_cdev_modem::is_throttling() { +- return throttling; +-} +- +-void cthd_cdev_modem::set_throttling_state(bool enabled) { +- throttling = enabled; +-} +- +-bool cthd_cdev_modem::is_online() { +- return online; +-} +- +-void cthd_cdev_modem::set_online_state(bool on) { +- online = on; +-} +- +-void cthd_cdev_modem::throttle_modem(int state) { +- DBusConnection *conn; +- DBusError error; +- +- DBusMessage *msg; +- DBusMessageIter iter; +- DBusMessageIter var; +- +- const char *property = "TransmitPowerThrottling"; +- +- dbus_bool_t enable; +- +- char var_sig[] = { DBUS_TYPE_BOOLEAN, 0 }; +- +- dbus_error_init(&error); +- +- conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error); +- if (dbus_error_is_set(&error)) { +- thd_log_error("Couldn't connect to system bus: %s:\n", error.message); +- dbus_error_free(&error); +- return; +- } +- +- msg = dbus_message_new_method_call("org.ofono", modem_path.c_str(), +- THERMAL_MANAGEMENT_INTERFACE, "SetProperty"); +- if (msg == NULL) { +- thd_log_error("Couldn't create D-Bus message for SetProperty " +- "under %s : %s\n", modem_path.c_str(), error.message); +- return; +- } +- +- enable = (state == MODEM_THROTTLING_ENABLED) ? true : false; +- +- dbus_message_iter_init_append(msg, &iter); +- +- if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &property)) { +- thd_log_error("Error populating modem %s arguments: %s\n", +- enable ? "throttle" : "de-throttle", error.message); +- return; +- } +- +- dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, var_sig, &var); +- +- if (!dbus_message_iter_append_basic(&var, DBUS_TYPE_BOOLEAN, &enable)) { +- thd_log_error("Error populating modem %s arguments: %s\n", +- enable ? "throttle" : "de-throttle", error.message); +- return; +- } +- +- dbus_message_iter_close_container(&iter, &var); +- +- // send message +- if (!dbus_connection_send(conn, msg, NULL)) { +- thd_log_error("Error sending modem throttle message to %s !\n", +- modem_path.c_str()); +- return; +- } +- +- dbus_connection_flush(conn); +- dbus_message_unref(msg); +-} +diff --git a/src/thd_cdev_modem.h b/src/thd_cdev_modem.h +deleted file mode 100644 +index c88ae7e0..00000000 +--- a/src/thd_cdev_modem.h ++++ /dev/null +@@ -1,64 +0,0 @@ +-/* +- * thd_cdev_modem.h: thermal modem cooling interface +- * Copyright (c) 2016, Intel Corporation. +- * +- * This program is free software; you can redistribute it and/or modify it +- * under the terms and conditions of the GNU General Public License +- * version 2 or later as published by the Free Software Foundation. +- * +- * This program is distributed in the hope it will be useful, but WITHOUT +- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +- * more details. +- * +- * +- * Author Name +- * +- */ +- +-#ifndef THD_CDEV_MODEM_H_ +-#define THD_CDEV_MODEM_H_ +- +-#include "thd_cdev.h" +- +-#define MODEM_INTERFACE "org.ofono.Modem" +-#define THERMAL_MANAGEMENT_INTERFACE "org.ofono.sofia3gr.ThermalManagement" +- +-enum modem_throttling_state { +- MODEM_THROTTLING_DISABLED = 0, MODEM_THROTTLING_ENABLED, +-}; +- +-class cthd_cdev_modem: public cthd_cdev { +-private: +- std::string modem_path; +- bool online; +- bool throttling; +- +- bool is_online(void); +- void set_online_state(bool); +- int is_throttling(void); +- void set_throttling_state(bool); +- void throttle_modem(int state); +- +-public: +- cthd_cdev_modem(unsigned int _index, std::string control_path); +- int get_curr_state(void); +- void set_curr_state(int state, int arg); +- int get_max_state(void); +- int get_modem_property(DBusConnection *conn, const char *interface, +- const char *property, bool *value); +- int update_online_state(DBusConnection *conn); +- int update_throttling_state(DBusConnection *conn); +- int update(void); +- void update_throttling_state(void); +- int is_interface_up(DBusConnection *conn); +- +- static DBusHandlerResult +- ofono_signal_handler(DBusConnection *conn, DBusMessage *msg, +- void *user_data); +- +- static int +- parse_ofono_property_changed_signal(DBusMessage *msg, const char *interface, +- const char *signal, const char *property, dbus_bool_t *value); +-}; +-#endif /* THD_CDEV_MODEM_H_ */ +diff --git a/src/thermald.h b/src/thermald.h +index 45ee3b10..286c659d 100644 +--- a/src/thermald.h ++++ b/src/thermald.h +@@ -69,9 +69,6 @@ + #define LOCKF_SUPPORT + #ifdef GLIB_SUPPORT + #include +-#include +-#include +-#include + #include + #include + + +From 9124d3645dc174709b203849ff70abf989702f17 Mon Sep 17 00:00:00 2001 +From: Kate Hsuan +Date: Tue, 16 Apr 2024 17:39:00 +0800 +Subject: [PATCH 4/4] main: unown dbus name when thermald is terminated + +Unown the dbus name when thermeld is terminated. +--- + src/main.cpp | 4 ++-- + src/thd_dbus_interface.cpp | 18 +++++++++--------- + 2 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/src/main.cpp b/src/main.cpp +index 135fa3ff..1ea74b76 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -87,7 +87,7 @@ gboolean exclusive_control = FALSE; + static GMainLoop *g_main_loop; + + #ifdef GDBUS +-gint watcher_id = 0; ++gint own_id = 0; + #endif + + // g_log handler. All logs will be directed here +@@ -374,7 +374,7 @@ int main(int argc, char *argv[]) { + thd_log_warn("Oops g main loop exit..\n"); + + #ifdef GDBUS +- g_bus_unwatch_name (watcher_id); ++ g_bus_unown_name (own_id); + #endif + + fprintf(stdout, "Exiting ..\n"); +diff --git a/src/thd_dbus_interface.cpp b/src/thd_dbus_interface.cpp +index cad86ba8..c75e56c2 100644 +--- a/src/thd_dbus_interface.cpp ++++ b/src/thd_dbus_interface.cpp +@@ -588,7 +588,7 @@ gboolean thd_dbus_interface_get_sensor_temperature(PrefObject *obj, int index, + #pragma GCC diagnostic push + + static GDBusInterfaceVTable interface_vtable; +-extern gint watcher_id; ++extern gint own_id; + + static GDBusNodeInfo * + thd_dbus_load_introspection(const gchar *filename, GError **error) +@@ -1230,14 +1230,14 @@ int thd_dbus_server_init(gboolean (*exit_handler)(void)) { + interface_vtable.get_property = thd_dbus_handle_get_property; + interface_vtable.set_property = thd_dbus_handle_set_property; + +- watcher_id = g_bus_own_name(G_BUS_TYPE_SYSTEM, +- "org.freedesktop.thermald", +- G_BUS_NAME_OWNER_FLAGS_REPLACE, +- thd_dbus_on_bus_acquired, +- thd_dbus_on_name_acquired, +- thd_dbus_on_name_lost, +- g_object_ref(value_obj), +- NULL); ++ own_id = g_bus_own_name(G_BUS_TYPE_SYSTEM, ++ "org.freedesktop.thermald", ++ G_BUS_NAME_OWNER_FLAGS_REPLACE, ++ thd_dbus_on_bus_acquired, ++ thd_dbus_on_name_acquired, ++ thd_dbus_on_name_lost, ++ g_object_ref(value_obj), ++ NULL); + + return THD_SUCCESS; + } diff --git a/SPECS/thermald.spec b/SPECS/thermald.spec new file mode 100644 index 0000000..dca7105 --- /dev/null +++ b/SPECS/thermald.spec @@ -0,0 +1,429 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.6.1) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 4; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +%global pkgname thermal_daemon + +%bcond qt %[%{undefined rhel} || 0%{?rhel} < 10] + +Name: thermald +Version: 2.5.7 +Release: %autorelease +Summary: Thermal Management daemon + +License: GPLv2+ +URL: https://github.com/intel/%{pkgname} +Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz + +# https://github.com/intel/thermal_daemon/pull/441 +# Deprecate intel-modem and dbus-glib +Patch001: 441.patch + +# No cpuid.h on other arches. +ExclusiveArch: %{ix86} x86_64 + +BuildRequires: make +BuildRequires: autoconf autoconf-archive +BuildRequires: automake +BuildRequires: desktop-file-utils +BuildRequires: gcc-c++ +BuildRequires: libxml2-devel +BuildRequires: systemd-rpm-macros +BuildRequires: upower-devel +BuildRequires: libevdev-devel +BuildRequires: gtk-doc + +Requires: dbus%{?_isa} + +Requires(pre): glibc-common +Requires(pre): shadow-utils + +%{?systemd_requires} + +%description +%{name} monitors and controls platform temperature. + +Thermal issues are important to handle proactively to reduce performance +impact. %{name} uses the existing Linux kernel infrastructure and can +be easily enhanced. + + +%if %{with qt} +%package monitor +Summary: Application for monitoring %{name} +License: GPLv3+ + +BuildRequires: qcustomplot-qt5-devel +BuildRequires: qt5-qtbase-devel + +Requires: hicolor-icon-theme +Requires: %{name}%{?_isa} == %{version}-%{release} + +%description monitor +This package contains an Application to monitor %{name} for system +developers who want to enable application developers and their +customers with the responsive and flexible thermal management, +supporting optimal performance in desktop, clam-shell, mobile and +embedded devices. +%endif + + +%prep +%autosetup -n %{pkgname}-%{version} -p 1 + +# Create tmpfiles.d config. +mkdir -p fedora_addons +cat << EOF > fedora_addons/%{name}.conf +d %{_rundir}/%{name} 0755 root root - +EOF + +%if %{with qt} +# Create desktop-file for the monitor-app. +cat << EOF > fedora_addons/%{name}-monitor.desktop +[Desktop Entry] +Name=%{name} Monitor +Comment=Application for monitoring %{name} +Icon=%{name}-monitor +Categories=System;Settings; +Exec=%{_bindir}/ThermalMonitor +Type=Application +StartupNotify=true +Terminal=false +EOF + +# Create icon for the monitor-app. +cat << EOF > fedora_addons/%{name}-monitor.svg + + + + + + + + + + + + + + + +EOF + +# Create ReadMe.txt for the monitor-app. +cat << EOF > fedora_addons/%{name}-monitor.ReadMe.txt +Running the thermald-monitor-app +-------------------------------- + +To communicate with thermald via dbus, the user has to be member +of the "power" group. So make sure to add your user id to this +group before using the thermald-monitor-app. +EOF +%endif + +NO_CONFIGURE=1 ./autogen.sh + + +%build +%configure \ + --with-systemdsystemunitdir=%{_unitdir} \ + --disable-option-checking \ + --disable-silent-rules + +%make_build + +%if %{with qt} +# Build the monitor-app. +pushd tools/thermal_monitor +sed -i -e 's/QCustomPlot/qcustomplot-qt5/' ThermalMonitor.pro +mkdir -p %{_target_platform} +pushd %{_target_platform} +%{qmake_qt5} .. +%make_build +popd +popd +%endif + + +%install +%make_install + +# Install management-script. +install -Dpm 0755 tools/thermald_set_pref.sh \ + %{buildroot}%{_bindir}/%{name}-set-pref + +# Setup tmpfiles.d +install -Dpm 0644 fedora_addons/%{name}.conf %{buildroot}%{_tmpfilesdir}/%{name}.conf +install -dm 0755 %{buildroot}%{_rundir}/%{name} +/bin/echo "%{name}_pid" > %{buildroot}%{_rundir}/%{name}/%{name}.pid +chmod -c 0644 %{buildroot}%{_rundir}/%{name}/%{name}.pid + +%if %{with qt} +# Install the monitor-app. +install -Dpm 0755 tools/thermal_monitor/%{_target_platform}/ThermalMonitor \ + %{buildroot}%{_bindir}/ThermalMonitor +install -Dpm 0644 fedora_addons/%{name}-monitor.desktop \ + %{buildroot}%{_datadir}/applications/%{name}-monitor.desktop +install -Dpm 0644 fedora_addons/%{name}-monitor.svg \ + %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}-monitor.svg +%endif + + +%check +%if %{with qt} +%{_bindir}/desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop +%endif + + +%pre +/bin/getent group power >/dev/null || /sbin/groupadd -r power +exit 0 + + +%post +%systemd_post thermald.service + + +%preun +%systemd_preun thermald.service + + +%postun +%systemd_postun_with_restart thermald.service + +%files +%license COPYING +%config(noreplace) %{_sysconfdir}/%{name} +%doc README.txt thermal_daemon_usage.txt +%ghost %dir %{_rundir}/%{name} +%ghost %{_rundir}/%{name}/%{name}.pid +%{_bindir}/%{name}-set-pref +%{_datadir}/dbus-1/system-services/org.freedesktop.%{name}.service +%{_datadir}/dbus-1/system.d/org.freedesktop.%{name}.conf +%{_mandir}/man5/thermal-conf.xml.5* +%{_mandir}/man8/%{name}.8* +%{_sbindir}/%{name} +%{_tmpfilesdir}/%{name}.conf +%{_unitdir}/%{name}.service + + +%if %{with qt} +%files monitor +%doc fedora_addons/%{name}-monitor.ReadMe.txt +%license tools/thermal_monitor/COPYING +%{_bindir}/ThermalMonitor +%{_datadir}/applications/%{name}-monitor.desktop +%{_datadir}/icons/hicolor/scalable/apps/%{name}-monitor.svg +%endif + + +%changelog +* Fri Oct 25 2024 MSVSphere Packaging Team - 2.5.7-4 +- Rebuilt for MSVSphere 10 + +## START: Generated by rpmautospec +* Mon Jun 24 2024 Troy Dawson - 2.5.7-4 +- Bump release for June 2024 mass rebuild + +* Mon Jun 10 2024 Jiří Koten - 2.5.7-3 +- Fix the gating test. + +* Tue May 28 2024 Kate Hsuan - 2.5.7-2 +- Add gating definition for RHEL-10 + +* Tue May 21 2024 Kate Hsuan - 2.5.7-1 +- RHEL-37515 Update to release 2.5.7 and remove dbus-glib dependency + +* Sun Feb 11 2024 Peter Robinson - 2.5.6-1 +- Update to 2.5.6, spec cleanups + +* Sat Jan 27 2024 Fedora Release Engineering - 2.5-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Aug 16 2023 Yaakov Selkowitz - 2.5-6 +- Disable monitor in RHEL builds + +* Sun Jul 23 2023 Yaakov Selkowitz - 2.5-5 +- Fix build with latest systemd + +* Sat Jul 22 2023 Fedora Release Engineering - 2.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Jan 21 2023 Fedora Release Engineering - 2.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Aug 17 2022 Kalev Lember - 2.5-2 +- Fix the build + +* Tue Aug 16 2022 Kalev Lember - 2.5-1 +- Update to 2.5 + +* Sat Jul 23 2022 Fedora Release Engineering - 2.4.8-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Feb 09 2022 Benjamin Berg - 2.4.8-4 +- Pull in adaptive fixes/improvements and p-p-d integration + +* Sat Jan 22 2022 Fedora Release Engineering - 2.4.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jan 12 2022 Benjamin Berg - 2.4.8-1 +- Update to 2.4.8 (#2038523) + +* Wed Nov 24 2021 Benjamin Berg - 2.4.6-3 +- Pull AlderLake and JasperLake support from upstream + +* Fri Jul 23 2021 Fedora Release Engineering - 2.4.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Jun 10 2021 Benjamin Berg - 2.4.6-1 +- Update to 2.4.6 (#1965783) +- Update main license to GPLv2 only for now +- Add bundled(qcustomplot) for monitor subpackage + +* Fri May 14 2021 Benjamin Berg - 2.4.4-1 +- Update to 2.4.4 + Resolves: #1935728 + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 2.4.1-4 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Tue Feb 02 2021 Benjamin Berg - 2.4.1-3 +- Add upstream patch fixing parsing of passive targets + +* Wed Jan 27 2021 Fedora Release Engineering - 2.4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Dec 01 2020 Benjamin Berg - 2.4.1-1 +- New upstream release (#1903094) + +* Thu Nov 26 2020 Benjamin Berg - 2.4-1 +- New upstream release (#1901810) + Resolves: #1894178 + Resolves: #1892534 + +* Tue Sep 01 2020 Benjamin Berg - 2.3-2 +- Fix Lenovo kill switch (#1874462) + +* Tue Aug 25 2020 Benjamin Berg - 2.3-1 +- New upstream release 2.3 (rhbz#1866784) +- Add patch to fix printf on non-64 bit + +* Wed Jul 29 2020 Fedora Release Engineering - 2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jun 08 2020 Benjamin Berg - 2.2-1 +- New upstream release 2.2 (rhbz#1827883) + +* Fri Jan 31 2020 Fedora Release Engineering - 1.9.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Dec 18 2019 Benjamin Berg - 1.9.1-1 +- New upstream release 1.9 (rhbz#1782249) +- Drop Patch0, it has been merged upstream + +* Fri Sep 20 2019 Christian Kellner - 1.9-1 +- New upstream release 1.9 (rhbz#1742290) +- Update patch0 (taken from upstream, commit dcdaf52...) + +* Sat Jul 27 2019 Fedora Release Engineering - 1.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri May 17 2019 Benjamin Berg - 1.8-2 +- Fix build on i686 + +* Fri May 17 2019 Benjamin Berg - 1.8-1 +- New upstream release (#1582506) + +* Sun Feb 03 2019 Fedora Release Engineering - 1.7.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 1.7.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Feb 09 2018 Fedora Release Engineering - 1.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Dec 28 2017 Björn Esser - 1.7.1-1 +- New upstream release (#1505144) + +* Thu Aug 03 2017 Fedora Release Engineering - 1.6-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.6-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Jul 01 2017 Björn Esser - 1.6-6 +- Add upstreamed patch to silence compiler warnings + +* Sat Jul 01 2017 Björn Esser - 1.6-5 +- Replace fix for rhbz#1464548 from upstream commit +- Add upstream patch to fix README + +* Fri Jun 30 2017 Björn Esser - 1.6-4 +- Add upstream patch to fix ThermalMonitor (rhbz#1464548) +- Add several fixes from upstream + +* Tue Apr 11 2017 Björn Esser - 1.6-3 +- Explicitly turn on hardening, if required + +* Tue Apr 11 2017 Björn Esser - 1.6-2 +- Fix missing trailing semicolon in desktop-file + +* Tue Apr 11 2017 Björn Esser - 1.6-1 +- Initial import (rhbz#1440406) + +* Mon Apr 10 2017 Björn Esser - 1.6-0.4 +- Use qmake_qt5-macro and build out of tree + +* Sat Apr 08 2017 Björn Esser - 1.6-0.3 +- Small packaging improvements + +* Sat Apr 08 2017 Björn Esser - 1.6-0.2 +- Add management-script + +* Sat Apr 08 2017 Björn Esser - 1.6-0.1 +- Initial rpm-release (rhbz#1440406) + +## END: Generated by rpmautospec