From 695dfd5a0c143e8346bb5ef513c4e5e15e0dbbe1 Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Tue, 21 May 2024 14:37:19 +0800 Subject: [PATCH] RHEL-37515 Update to release 2.5.7 and remove dbus-glib dependency Update to the upstream release and also intel-modem was deprecated. Moreover, the dependency issue about dbus-glib can be resolved through 441.patch Link: https://github.com/intel/thermal_daemon/pull/441 Resolves: RHEL-24481, DESKTOP-742, RHEL-37515 --- 441.patch | 846 ++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- thermald.spec | 7 +- 3 files changed, 852 insertions(+), 3 deletions(-) create mode 100644 441.patch diff --git a/441.patch b/441.patch new file mode 100644 index 0000000..4e53e58 --- /dev/null +++ b/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/sources b/sources index a19d2bc..e97775a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (thermald-2.5.6.tar.gz) = d039e4bd4ed203caf786c8090c27910b5b5f3886e8e4d160d6347bb2b8c1d6aaaca14958ee91ad4aedb02e67f8a6403805719bf07d55f03fe1f28f3e4378ae73 +SHA512 (thermald-2.5.7.tar.gz) = 49699eb2a3f3d1197e680a39ecba767a1f11a5d4209671d30152f1e126f7c48b650909c4dd90c496a7857b0fa9ad6fc8c5a849413a8e544b3d5f62d8acfc8268 diff --git a/thermald.spec b/thermald.spec index 1e3a4d2..cae0e9a 100644 --- a/thermald.spec +++ b/thermald.spec @@ -3,7 +3,7 @@ %bcond qt %[%{undefined rhel} || 0%{?rhel} < 10] Name: thermald -Version: 2.5.6 +Version: 2.5.7 Release: %autorelease Summary: Thermal Management daemon @@ -11,13 +11,16 @@ 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: dbus-glib-devel BuildRequires: desktop-file-utils BuildRequires: gcc-c++ BuildRequires: libxml2-devel