From 4cc1050c1a6c9f149e37ec2ddb9ad55cfef8145c Mon Sep 17 00:00:00 2001 From: Ali Erdinc Koroglu Date: Fri, 15 Dec 2023 14:17:38 +0200 Subject: [PATCH] 1st release --- .gitignore | 1 + 13.patch | 241 ++++++++++++++++++++++++++++++++++++++++++++++++ intel-lpmd.spec | 77 ++++++++++++++++ sources | 1 + 4 files changed, 320 insertions(+) create mode 100644 .gitignore create mode 100644 13.patch create mode 100644 intel-lpmd.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b7675d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/intel-lpmd-*.tar.gz diff --git a/13.patch b/13.patch new file mode 100644 index 0000000..dca1468 --- /dev/null +++ b/13.patch @@ -0,0 +1,241 @@ +From 5ba48f7215b94dc43a28d2b5264c6fa65989add9 Mon Sep 17 00:00:00 2001 +From: Ali Erdinc Koroglu +Date: Tue, 17 Oct 2023 15:16:22 +0300 +Subject: [PATCH 1/2] Werror fixes + +--- + src/lpmd_config.c | 28 ++++++++++++++-------------- + src/lpmd_cpu.c | 2 +- + src/lpmd_main.c | 2 -- + src/lpmd_proc.c | 5 ----- + src/lpmd_util.c | 2 -- + 5 files changed, 15 insertions(+), 24 deletions(-) + +diff --git a/src/lpmd_config.c b/src/lpmd_config.c +index e360b29..a3c5bcf 100644 +--- a/src/lpmd_config.c ++++ b/src/lpmd_config.c +@@ -54,7 +54,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + if (tmp_value) { + lpmd_log_info ("node type: Element, name: %s, value: %s\n", cur_node->name, + tmp_value); +- if (!strncmp (cur_node->name, "Mode", strlen ("Mode"))) { ++ if (!strncmp((const char*)cur_node->name, "Mode", strlen("Mode"))) { + errno = 0; + lpmd_config->mode = strtol (tmp_value, &pos, 10); + lpmd_log_info ("mode %d, errno %d, tmp_value %p, pos %p\n", lpmd_config->mode, +@@ -64,21 +64,21 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + || lpmd_config->mode < 0) + goto err; + } +- else if (!strncmp (cur_node->name, "HfiLpmEnable", strlen ("HfiEnable"))) { ++ else if (!strncmp((const char*)cur_node->name, "HfiLpmEnable", strlen("HfiEnable"))) { + errno = 0; + lpmd_config->hfi_lpm_enable = strtol (tmp_value, &pos, 10); + if (errno || *pos != '\0' + || (lpmd_config->hfi_lpm_enable != 1 && lpmd_config->hfi_lpm_enable != 0)) + goto err; + } +- else if (!strncmp (cur_node->name, "HfiSuvEnable", strlen ("HfiEnable"))) { ++ else if (!strncmp((const char*)cur_node->name, "HfiSuvEnable", strlen("HfiEnable"))) { + errno = 0; + lpmd_config->hfi_suv_enable = strtol (tmp_value, &pos, 10); + if (errno || *pos != '\0' + || (lpmd_config->hfi_suv_enable != 1 && lpmd_config->hfi_suv_enable != 0)) + goto err; + } +- else if (!strncmp (cur_node->name, "EntryDelayMS", strlen ("EntryDelayMS"))) { ++ else if (!strncmp((const char*)cur_node->name, "EntryDelayMS", strlen ("EntryDelayMS"))) { + errno = 0; + lpmd_config->util_entry_delay = strtol (tmp_value, &pos, 10); + if (errno +@@ -86,7 +86,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + != '\0'|| lpmd_config->util_entry_delay < 0 || lpmd_config->util_entry_delay > UTIL_DELAY_MAX) + goto err; + } +- else if (!strncmp (cur_node->name, "ExitDelayMS", strlen ("ExitDelayMS"))) { ++ else if (!strncmp((const char*)cur_node->name, "ExitDelayMS", strlen ("ExitDelayMS"))) { + errno = 0; + lpmd_config->util_exit_delay = strtol (tmp_value, &pos, 10); + if (errno +@@ -94,7 +94,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + != '\0'|| lpmd_config->util_exit_delay < 0 || lpmd_config->util_exit_delay > UTIL_DELAY_MAX) + goto err; + } +- else if (!strncmp (cur_node->name, "util_entry_threshold", ++ else if (!strncmp((const char*)cur_node->name, "util_entry_threshold", + strlen ("util_entry_threshold"))) { + errno = 0; + lpmd_config->util_entry_threshold = strtol (tmp_value, &pos, 10); +@@ -102,7 +102,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + || lpmd_config->util_entry_threshold > 100) + goto err; + } +- else if (!strncmp (cur_node->name, "util_exit_threshold", ++ else if (!strncmp((const char*)cur_node->name, "util_exit_threshold", + strlen ("util_exit_threshold"))) { + errno = 0; + lpmd_config->util_exit_threshold = strtol (tmp_value, &pos, 10); +@@ -110,7 +110,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + || lpmd_config->util_exit_threshold > 100) + goto err; + } +- else if (!strncmp (cur_node->name, "EntryHystMS", strlen ("EntryHystMS"))) { ++ else if (!strncmp((const char*)cur_node->name, "EntryHystMS", strlen ("EntryHystMS"))) { + errno = 0; + lpmd_config->util_entry_hyst = strtol (tmp_value, &pos, 10); + if (errno +@@ -118,7 +118,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + != '\0'|| lpmd_config->util_entry_hyst < 0 || lpmd_config->util_entry_hyst > UTIL_HYST_MAX) + goto err; + } +- else if (!strncmp (cur_node->name, "ExitHystMS", strlen ("ExitHystMS"))) { ++ else if (!strncmp((const char*)cur_node->name, "ExitHystMS", strlen ("ExitHystMS"))) { + errno = 0; + lpmd_config->util_exit_hyst = strtol (tmp_value, &pos, 10); + if (errno +@@ -126,7 +126,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + != '\0'|| lpmd_config->util_exit_hyst < 0 || lpmd_config->util_exit_hyst > UTIL_HYST_MAX) + goto err; + } +- else if (!strncmp (cur_node->name, "IgnoreITMT", strlen ("IgnoreITMT"))) { ++ else if (!strncmp((const char*)cur_node->name, "IgnoreITMT", strlen ("IgnoreITMT"))) { + errno = 0; + lpmd_config->ignore_itmt = strtol (tmp_value, &pos, 10); + if (errno +@@ -134,14 +134,14 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + != '\0'|| lpmd_config->ignore_itmt < 0 || lpmd_config->ignore_itmt > 1) + goto err; + } +- else if (!strncmp (cur_node->name, "lp_mode_cpus", strlen ("lp_mode_cpus"))) { ++ else if (!strncmp((const char*)cur_node->name, "lp_mode_cpus", strlen ("lp_mode_cpus"))) { + if (!strncmp (tmp_value, "-1", strlen ("-1"))) + lpmd_config->lp_mode_cpus[0] = '\0'; + else + snprintf (lpmd_config->lp_mode_cpus, sizeof(lpmd_config->lp_mode_cpus), + "%s", tmp_value); + } +- else if (!strncmp (cur_node->name, "PerformanceDef", strlen ("PerformanceDef"))) { ++ else if (!strncmp((const char*)cur_node->name, "PerformanceDef", strlen ("PerformanceDef"))) { + errno = 0; + lpmd_config->performance_def = strtol (tmp_value, &pos, 10); + if (errno || *pos != '\0') +@@ -155,7 +155,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + else + goto err; + } +- else if (!strncmp (cur_node->name, "BalancedDef", strlen ("BalancedDef"))) { ++ else if (!strncmp((const char*)cur_node->name, "BalancedDef", strlen ("BalancedDef"))) { + errno = 0; + lpmd_config->balanced_def = strtol (tmp_value, &pos, 10); + if (errno || *pos != '\0') +@@ -169,7 +169,7 @@ static int lpmd_fill_config(xmlDoc *doc, xmlNode *a_node, lpmd_config_t *lpmd_co + else + goto err; + } +- else if (!strncmp (cur_node->name, "PowersaverDef", strlen ("PowersaverDef"))) { ++ else if (!strncmp((const char*)cur_node->name, "PowersaverDef", strlen ("PowersaverDef"))) { + errno = 0; + lpmd_config->powersaver_def = strtol (tmp_value, &pos, 10); + if (errno || *pos != '\0') +diff --git a/src/lpmd_cpu.c b/src/lpmd_cpu.c +index 04b47fc..703baea 100644 +--- a/src/lpmd_cpu.c ++++ b/src/lpmd_cpu.c +@@ -161,7 +161,7 @@ static int cpumask_to_hexstr(cpu_set_t *mask, char *str, int size) + int cpu; + int i; + int pos = 0; +- char c; ++ char c = 0; + + for (cpu = 0; cpu < topo_max_cpus; cpu++) { + i = cpu % 4; +diff --git a/src/lpmd_main.c b/src/lpmd_main.c +index 94bcc5b..fc671e9 100644 +--- a/src/lpmd_main.c ++++ b/src/lpmd_main.c +@@ -157,9 +157,7 @@ int main(int argc, char *argv[]) + gboolean log_info = FALSE; + gboolean log_debug = FALSE; + gboolean no_daemon = FALSE; +- gboolean ignore_itmt = FALSE; + gboolean systemd = FALSE; +- gchar *conf_file = NULL; + gboolean success; + GOptionContext *opt_ctx; + int ret; +diff --git a/src/lpmd_proc.c b/src/lpmd_proc.c +index 88ced8a..6361ee9 100644 +--- a/src/lpmd_proc.c ++++ b/src/lpmd_proc.c +@@ -151,8 +151,6 @@ enum lpm_state { + /* Force off by default */ + int lpm_state = LPM_USER_OFF; + +-static pthread_mutex_t lpm_mutex; +- + /* + * 1: request valid and already satisfied. 0: respond valid and need to continue to process. -1: request invalid + */ +@@ -488,8 +486,6 @@ static void connect_to_power_profile_daemon(void) + /* Poll time out default */ + #define POLL_TIMEOUT_DEFAULT_SECONDS 1 + +-static int poll_timeout_sec = POLL_TIMEOUT_DEFAULT_SECONDS; +- + static bool main_loop_terminate; + + // called from LPMD main thread to process user and system messages +@@ -540,7 +536,6 @@ static int proc_message(message_capsul_t *msg) + static void* lpmd_core_main_loop(void *arg) + { + int interval, n; +- unsigned int i; + static int first_try = 1; + + for (;;) { +diff --git a/src/lpmd_util.c b/src/lpmd_util.c +index d8e1543..8210cb7 100644 +--- a/src/lpmd_util.c ++++ b/src/lpmd_util.c +@@ -198,8 +198,6 @@ enum system_status { + + static enum system_status sys_stat = SYS_NORMAL; + +-static struct timespec tp1, tp2; +- + static int first_run = 1; + + static enum system_status get_sys_stat(void) + +From 1668ed0265ed7cd0e21fe33dd82404b8087bb844 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ali=20Erdin=C3=A7=20K=C3=B6ro=C4=9Flu?= + +Date: Fri, 27 Oct 2023 14:25:05 +0300 +Subject: [PATCH 2/2] Update Makefile + +use conditional variable +--- + tools/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tools/Makefile b/tools/Makefile +index 9b5924c..670a74e 100755 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -2,12 +2,12 @@ CFLAGS_DBUS_GLIB = $(shell pkg-config --cflags --libs dbus-glib-1) + + bindir ?= /usr/bin + +-CFLAGS = -g -Wall -Werror ++CFLAGS ?= -g -Wall -Werror + + all: intel_lpmd_control + + intel_lpmd_control: intel_lpmd_control.c +- gcc $< -o $@ $(CFLAGS) $(CFLAGS_DBUS_GLIB) ++ gcc $< -o $@ $(CFLAGS) $(CFLAGS_DBUS_GLIB) $(LDFLAGS) + + clean: + rm -f intel_lpmd_control diff --git a/intel-lpmd.spec b/intel-lpmd.spec new file mode 100644 index 0000000..64d5d04 --- /dev/null +++ b/intel-lpmd.spec @@ -0,0 +1,77 @@ +%global daemon_name intel_lpmd + +Name: intel-lpmd +Version: 0.0.2 +Release: %autorelease +Summary: Intel Low Power Mode Daemon + +License: GPL-2.0-or-later +URL: https://github.com/intel/intel-lpmd +Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz + +# https://github.com/intel/intel-lpmd/pull/13 +Patch0: 13.patch + +ExclusiveArch: x86_64 + +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: gcc +BuildRequires: gtk-doc +BuildRequires: dbus-glib-devel +BuildRequires: libnl3-devel +BuildRequires: libxml2-devel +BuildRequires: libtool +BuildRequires: systemd-devel +BuildRequires: systemd-units + +%description +Intel Low Power Model Daemon is a Linux daemon used to optimize active idle +power. It selects a set of most power efficient CPUs based on configuration +file or CPU topology. Based on system utilization and other hints, it puts +the system into Low Power Mode by activating the power efficient CPUs and +disabling the rest, and restoring the system from Low Power Mode by activating +all CPUs. + +%prep +%autosetup -p1 + +# fedora path fix +sed -i -e "s|etc|usr/share|" configure.ac + +%build +aclocal --install +gtkdocize --copy --flavour no-tmpl +autoreconf --install --verbose +%configure +%make_build + +%install +%make_install +install -D -p -m 644 src/%{daemon_name}_dbus_interface.xml %{buildroot}/%{_datadir}/dbus-1/interfaces/org.freedesktop.%{daemon_name}.xml + +%post +%systemd_post %{daemon_name}.service + +%preun +%systemd_preun %{daemon_name}.service + +%postun +%systemd_postun_with_restart %{daemon_name}.service + +%files +%license COPYING +%doc README.md +%{_bindir}/%{daemon_name}_control +%{_sbindir}/%{daemon_name} +%dir %{_sysconfdir}/%{daemon_name} +%config(noreplace) %{_sysconfdir}/%{daemon_name}/%{daemon_name}_config.xml +%{_datadir}/dbus-1/interfaces/org.freedesktop.%{daemon_name}.xml +%{_datadir}/dbus-1/system.d/org.freedesktop.%{daemon_name}.conf +%{_datadir}/dbus-1/system-services/org.freedesktop.%{daemon_name}.service +%{_unitdir}/%{daemon_name}.service +%{_mandir}/man5/%{daemon_name}_config.xml.5* +%{_mandir}/man8/%{daemon_name}.8* + +%changelog +%autochangelog diff --git a/sources b/sources new file mode 100644 index 0000000..b1806e2 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (intel-lpmd-0.0.2.tar.gz) = f4a1bd58b5d03f5fb95f4bbc89f052a73c06d2ed8947c48b5206ebe39bae82b5fbf88be69ad84f35cb48ef5bad0743a95d07d06bbad0671b882855b310e7f789