RHEL-20167 Initial commit for intel-lpmd

Initial commit for intel-lpmd

Resolves: RHEL-20167
This commit is contained in:
Kate Hsuan 2024-02-02 17:49:37 +08:00
parent 780a45e931
commit 93e8ea522d
5 changed files with 327 additions and 0 deletions

1
.gitignore vendored
View File

@ -0,0 +1 @@
/intel-lpmd-0.0.2.tar.gz

241
13.patch Normal file
View File

@ -0,0 +1,241 @@
From 5ba48f7215b94dc43a28d2b5264c6fa65989add9 Mon Sep 17 00:00:00 2001
From: Ali Erdinc Koroglu <aekoroglu@linux.intel.com>
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?=
<aekoroglu@gmail.com>
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

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}

78
intel-lpmd.spec Normal file
View File

@ -0,0 +1,78 @@
%global daemon_name intel_lpmd
Name: intel-lpmd
Version: 0.0.2
Release: 1%{?dist}
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
* Fri Feb 2 2024 Kate Hsuan <hpa@redhat.com> - 0.0.2-1
- Initial upstream release

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (intel-lpmd-0.0.2.tar.gz) = f4a1bd58b5d03f5fb95f4bbc89f052a73c06d2ed8947c48b5206ebe39bae82b5fbf88be69ad84f35cb48ef5bad0743a95d07d06bbad0671b882855b310e7f789