* [PATCH 1/3] initscripts: Automatically enable CPU power saving features
@ 2025-07-17 17:30 Michael Tremer
2025-07-17 17:30 ` [PATCH 2/3] cpufrequtils: Drop package Michael Tremer
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Michael Tremer @ 2025-07-17 17:30 UTC (permalink / raw)
To: development; +Cc: Michael Tremer
This is a cleaned up implementation of the script that was previously
packaged in the cpufrequtils package.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
config/rootfiles/common/aarch64/initscripts | 2 +
config/rootfiles/common/riscv64/initscripts | 2 +
config/rootfiles/common/x86_64/initscripts | 2 +
lfs/initscripts | 1 +
src/initscripts/system/cpupower | 89 +++++++++++++++++++++
5 files changed, 96 insertions(+)
create mode 100644 src/initscripts/system/cpupower
diff --git a/config/rootfiles/common/aarch64/initscripts b/config/rootfiles/common/aarch64/initscripts
index 1fd1f076f..fa43d4fe1 100644
--- a/config/rootfiles/common/aarch64/initscripts
+++ b/config/rootfiles/common/aarch64/initscripts
@@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
etc/rc.d/init.d/connectd
etc/rc.d/init.d/conntrackd
etc/rc.d/init.d/console
+etc/rc.d/init.d/cpupower
etc/rc.d/init.d/dhcp
etc/rc.d/init.d/dhcrelay
etc/rc.d/init.d/fcron
@@ -183,6 +184,7 @@ etc/rc.d/rcsysinit.d/S42fsresize
etc/rc.d/rcsysinit.d/S43mounttmpfs
etc/rc.d/rcsysinit.d/S44smt
etc/rc.d/rcsysinit.d/S45udev_retry
+etc/rc.d/rcsysinit.d/S46cpupower
etc/rc.d/rcsysinit.d/S50cleanfs
etc/rc.d/rcsysinit.d/S60setclock
etc/rc.d/rcsysinit.d/S70console
diff --git a/config/rootfiles/common/riscv64/initscripts b/config/rootfiles/common/riscv64/initscripts
index 694207257..a31359134 100644
--- a/config/rootfiles/common/riscv64/initscripts
+++ b/config/rootfiles/common/riscv64/initscripts
@@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
etc/rc.d/init.d/connectd
etc/rc.d/init.d/conntrackd
etc/rc.d/init.d/console
+etc/rc.d/init.d/cpupower
etc/rc.d/init.d/dhcp
etc/rc.d/init.d/dhcrelay
etc/rc.d/init.d/fcron
@@ -182,6 +183,7 @@ etc/rc.d/rcsysinit.d/S42fsresize
etc/rc.d/rcsysinit.d/S43mounttmpfs
etc/rc.d/rcsysinit.d/S44smt
etc/rc.d/rcsysinit.d/S45udev_retry
+etc/rc.d/rcsysinit.d/S46cpupower
etc/rc.d/rcsysinit.d/S50cleanfs
etc/rc.d/rcsysinit.d/S60setclock
etc/rc.d/rcsysinit.d/S70console
diff --git a/config/rootfiles/common/x86_64/initscripts b/config/rootfiles/common/x86_64/initscripts
index 694207257..a31359134 100644
--- a/config/rootfiles/common/x86_64/initscripts
+++ b/config/rootfiles/common/x86_64/initscripts
@@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
etc/rc.d/init.d/connectd
etc/rc.d/init.d/conntrackd
etc/rc.d/init.d/console
+etc/rc.d/init.d/cpupower
etc/rc.d/init.d/dhcp
etc/rc.d/init.d/dhcrelay
etc/rc.d/init.d/fcron
@@ -182,6 +183,7 @@ etc/rc.d/rcsysinit.d/S42fsresize
etc/rc.d/rcsysinit.d/S43mounttmpfs
etc/rc.d/rcsysinit.d/S44smt
etc/rc.d/rcsysinit.d/S45udev_retry
+etc/rc.d/rcsysinit.d/S46cpupower
etc/rc.d/rcsysinit.d/S50cleanfs
etc/rc.d/rcsysinit.d/S60setclock
etc/rc.d/rcsysinit.d/S70console
diff --git a/lfs/initscripts b/lfs/initscripts
index 99fe2f1be..49215c0ae 100644
--- a/lfs/initscripts
+++ b/lfs/initscripts
@@ -176,6 +176,7 @@ $(TARGET) :
ln -sf ../init.d/mounttmpfs /etc/rc.d/rcsysinit.d/S43mounttmpfs
ln -sf ../init.d/smt /etc/rc.d/rcsysinit.d/S44smt
ln -sf ../init.d/udev_retry /etc/rc.d/rcsysinit.d/S45udev_retry
+ ln -sf ../init.d/cpupower /etc/rc.d/rcsysinit.d/S46cpupower
ln -sf ../init.d/cleanfs /etc/rc.d/rcsysinit.d/S50cleanfs
ln -sf ../init.d/setclock /etc/rc.d/rcsysinit.d/S60setclock
ln -sf ../init.d/console /etc/rc.d/rcsysinit.d/S70console
diff --git a/src/initscripts/system/cpupower b/src/initscripts/system/cpupower
new file mode 100644
index 000000000..82b62a89b
--- /dev/null
+++ b/src/initscripts/system/cpupower
@@ -0,0 +1,89 @@
+#!/bin/sh
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2025 IPFire Team <info@ipfire.org> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that 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. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+# Load the configuration if it exists
+if [ -r "/etc/sysconfig/cpupower" ]; then
+ . /etc/sysconfig/cpupower
+fi
+
+# This function returns which governor to use
+find_governor() {
+ local driver
+
+ # If a governor has been configured, we just use that one
+ if [ -n "${GOVERNOR}" ]; then
+ echo "${GOVERNOR}"
+ return 0
+ fi
+
+ # Determine the driver
+ if [ -r "/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver" ]; then
+ driver="$(</sys/devices/system/cpu/cpu0/cpufreq/scaling_driver)"
+ fi
+
+ # Decide which governor to use based on the driver
+ case "${driver}" in
+ # If the driver could not be detected, we won't use anything
+ "")
+ ;;
+
+ # Intel P-State only supports performace and powersave. The latter
+ # is rather implemented like ondemand in other cases.
+ intel_pstate)
+ echo "powersave"
+ ;;
+
+ # For everything else use schedutil
+ *)
+ echo "schedutil"
+ ;;
+ esac
+
+ return 0
+}
+
+set_governor() {
+ # Find the governor to use
+ local governor="$(find_governor)"
+
+ # If we could not detect a governor we don't have anything to do
+ if [ -z "${governor}" ]; then
+ return 0
+ fi
+
+ # Set the governor
+ cpupower frequency-set --governor "${governor}" >/dev/null
+}
+
+case "${1}" in
+ start)
+ boot_mesg "Enabling CPU Power Saving Features..."
+ set_governor
+ evaluate_retval
+ ;;
+ *)
+ echo "Usage: ${0} {start}"
+ exit 1
+ ;;
+esac
--
2.39.5
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/3] cpufrequtils: Drop package
2025-07-17 17:30 [PATCH 1/3] initscripts: Automatically enable CPU power saving features Michael Tremer
@ 2025-07-17 17:30 ` Michael Tremer
2025-07-17 17:30 ` [PATCH 3/3] cpufrequtils: Drop unused patches Michael Tremer
2025-07-20 14:05 ` [PATCH 1/3] initscripts: Automatically enable CPU power saving features Charles Brown
2 siblings, 0 replies; 4+ messages in thread
From: Michael Tremer @ 2025-07-17 17:30 UTC (permalink / raw)
To: development; +Cc: Michael Tremer
This is now implemented in the core distribution.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
config/rootfiles/packages/cpufrequtils | 2 -
lfs/cpufrequtils | 69 --------------------------
make.sh | 1 -
3 files changed, 72 deletions(-)
delete mode 100644 config/rootfiles/packages/cpufrequtils
delete mode 100644 lfs/cpufrequtils
diff --git a/config/rootfiles/packages/cpufrequtils b/config/rootfiles/packages/cpufrequtils
deleted file mode 100644
index a058f370b..000000000
--- a/config/rootfiles/packages/cpufrequtils
+++ /dev/null
@@ -1,2 +0,0 @@
-etc/rc.d/init.d/cpufreq
-etc/rc.d/rc3.d/S18cpufreq
diff --git a/lfs/cpufrequtils b/lfs/cpufrequtils
deleted file mode 100644
index 0383834b6..000000000
--- a/lfs/cpufrequtils
+++ /dev/null
@@ -1,69 +0,0 @@
-###############################################################################
-# #
-# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2024 IPFire Team <info@ipfire.org> #
-# #
-# This program is free software: you can redistribute it and/or modify #
-# it under the terms of the GNU General Public License as published by #
-# the Free Software Foundation, either version 3 of the License, or #
-# (at your option) any later version. #
-# #
-# This program is distributed in the hope that 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. #
-# #
-# You should have received a copy of the GNU General Public License #
-# along with this program. If not, see <http://www.gnu.org/licenses/>. #
-# #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-SUMMARY = compatiblity initscript to set ondemand/powersave gov via cpupower
-
-VER = ipfire
-
-THISAPP = cpufrequtils-$(VER)
-#DL_FILE = $(THISAPP).tar.bz2
-#DL_FROM = $(URL_IPFIRE)
-DIR_APP = $(DIR_SRC)/$(THISAPP)
-TARGET = $(DIR_INFO)/$(THISAPP)
-PROG = cpufrequtils
-PAK_VER = 15
-
-DEPS =
-
-SERVICES =
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-
-install : $(TARGET)
-
-check :
-
-download :
-
-b2 :
-
-dist:
- @$(PAK)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
- @$(PREBUILD)
-
- #install initscripts
- $(call INSTALL_INITSCRIPTS,cpufreq)
-
- @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index dc1feb37a..56fd9be22 100755
--- a/make.sh
+++ b/make.sh
@@ -1903,7 +1903,6 @@ build_system() {
lfsmake2 hostapd
lfsmake2 syslinux
lfsmake2 tftpd
- lfsmake2 cpufrequtils
lfsmake2 apcupsd
lfsmake2 fireperf
lfsmake2 iperf
--
2.39.5
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 3/3] cpufrequtils: Drop unused patches
2025-07-17 17:30 [PATCH 1/3] initscripts: Automatically enable CPU power saving features Michael Tremer
2025-07-17 17:30 ` [PATCH 2/3] cpufrequtils: Drop package Michael Tremer
@ 2025-07-17 17:30 ` Michael Tremer
2025-07-20 14:05 ` [PATCH 1/3] initscripts: Automatically enable CPU power saving features Charles Brown
2 siblings, 0 replies; 4+ messages in thread
From: Michael Tremer @ 2025-07-17 17:30 UTC (permalink / raw)
To: development; +Cc: Michael Tremer
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 7593 bytes --]
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
.../0001-Only-x86-has-cpuid-instruction.patch | 34 --------------
...equtils-aperf-Fix-MSR-read-on-32-bit.patch | 35 --------------
...requtils-sysfs-increase-MAX_LINE_LEN.patch | 29 ------------
...-fix-compilation-on-x86-32-with-fPIC.patch | 46 -------------------
.../0007-po-add-missing-word-in-DE.patch | 28 -----------
5 files changed, 172 deletions(-)
delete mode 100644 src/patches/cpufrequtils/0001-Only-x86-has-cpuid-instruction.patch
delete mode 100644 src/patches/cpufrequtils/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch
delete mode 100644 src/patches/cpufrequtils/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch
delete mode 100644 src/patches/cpufrequtils/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch
delete mode 100644 src/patches/cpufrequtils/0007-po-add-missing-word-in-DE.patch
diff --git a/src/patches/cpufrequtils/0001-Only-x86-has-cpuid-instruction.patch b/src/patches/cpufrequtils/0001-Only-x86-has-cpuid-instruction.patch
deleted file mode 100644
index d3bc14d51..000000000
--- a/src/patches/cpufrequtils/0001-Only-x86-has-cpuid-instruction.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From f1b6bccf08f53295b2f7f448f28bbd37533c14a2 Mon Sep 17 00:00:00 2001
-From: Zhang Le <r0bertz@gentoo.org>
-Date: Sun, 18 Jul 2010 02:05:28 +0800
-Subject: [PATCH 1/8] Only x86 has cpuid instruction
-
-Signed-off-by: Zhang Le <r0bertz@gentoo.org>
-Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
----
- utils/aperf.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/utils/aperf.c b/utils/aperf.c
-index 627fb17..1c64501 100644
---- a/utils/aperf.c
-+++ b/utils/aperf.c
-@@ -68,11 +68,15 @@ struct avg_perf_cpu_info
-
- static int cpu_has_effective_freq()
- {
-+#if defined(__i386__) || defined(__x86_64__)
- /* largest base level */
- if (cpuid_eax(0) < 6)
- return 0;
-
- return cpuid_ecx(6) & 0x1;
-+#else
-+ return 0;
-+#endif
- }
-
- /*
---
-1.7.10
-
diff --git a/src/patches/cpufrequtils/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch b/src/patches/cpufrequtils/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch
deleted file mode 100644
index 308e73a5b..000000000
--- a/src/patches/cpufrequtils/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d4490efed068a552e8b67d52a0726458a224c9a0 Mon Sep 17 00:00:00 2001
-From: Frank Arnold <frank.arnold@amd.com>
-Date: Wed, 8 Dec 2010 17:39:14 +0100
-Subject: [PATCH 3/8] cpufrequtils aperf: Fix MSR read on 32-bit
-
-The cpufreq-aperf command does not work on 32-bit systems. The reason
-for that is a wrong count argument passed to the read() call. Instead
-of the buffer size, the size of the pointer to the buffer is used. On
-64-bit systems this just happened to work, because we need to read an
-8 byte value and a pointer has a size of 8 bytes on 64-bit. On 32-bit
-systems only 4 bytes are read, which then triggers the error path.
-
-Signed-off-by: Frank Arnold <frank.arnold@amd.com>
-Reviewed-by: Thomas Renninger <trenn@suse.de>
-Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
----
- utils/aperf.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/utils/aperf.c b/utils/aperf.c
-index 1c64501..6302f5a 100644
---- a/utils/aperf.c
-+++ b/utils/aperf.c
-@@ -100,7 +100,7 @@ static int read_msr(int cpu, unsigned int idx, unsigned long long *val)
- return -1;
- if (lseek(fd, idx, SEEK_CUR) == -1)
- goto err;
-- if (read(fd, val, sizeof val) != sizeof *val)
-+ if (read(fd, val, sizeof *val) != sizeof *val)
- goto err;
- close(fd);
- return 0;
---
-1.7.10
-
diff --git a/src/patches/cpufrequtils/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch b/src/patches/cpufrequtils/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch
deleted file mode 100644
index 94088300f..000000000
--- a/src/patches/cpufrequtils/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 9f2efa7bc6969c10562ac2c720d50ff77083e5c2 Mon Sep 17 00:00:00 2001
-From: Roman Vasiyarov <rvasiyarov@gmail.com>
-Date: Mon, 25 Apr 2011 21:34:23 +0400
-Subject: [PATCH 5/8] cpufrequtils sysfs: increase MAX_LINE_LEN
-
-larger sysfs data (>255 bytes) was truncated and thus used improperly
-
-Signed-off-by: Roman Vasiyarov <rvasiyarov@gmail.com>
-Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
----
- lib/sysfs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/sysfs.c b/lib/sysfs.c
-index 4e0edab..24dd563 100644
---- a/lib/sysfs.c
-+++ b/lib/sysfs.c
-@@ -18,7 +18,7 @@
- #include "cpufreq.h"
-
- #define PATH_TO_CPU "/sys/devices/system/cpu/"
--#define MAX_LINE_LEN 255
-+#define MAX_LINE_LEN 4096
- #define SYSFS_PATH_MAX 255
-
- /* helper function to read file from /sys into given buffer */
---
-1.7.10
-
diff --git a/src/patches/cpufrequtils/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch b/src/patches/cpufrequtils/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch
deleted file mode 100644
index ee3adff75..000000000
--- a/src/patches/cpufrequtils/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 9085ce6f615d9d2e0182d3ce029b882835bd0a6b Mon Sep 17 00:00:00 2001
-From: Matt Turner <mattst88@gmail.com>
-Date: Tue, 26 Jul 2011 19:28:31 -0400
-Subject: [PATCH 6/8] aperf: fix compilation on x86-32 with -fPIC
-
-ebx is used to store the GOT pointer when compiled with -fPIC, so it's
-not usable by inline assembly.
-
-https://bugs.gentoo.org/375967
-
-Signed-off-by: Matt Turner <mattst88@gmail.com>
-Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
----
- utils/cpuid.h | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/utils/cpuid.h b/utils/cpuid.h
-index 2bac69a..53da789 100644
---- a/utils/cpuid.h
-+++ b/utils/cpuid.h
-@@ -5,9 +5,21 @@ static inline void __cpuid(unsigned int *eax, unsigned int *ebx,
- unsigned int *ecx, unsigned int *edx)
- {
- /* ecx is often an input as well as an output. */
-- asm volatile("cpuid"
-+ asm volatile(
-+#if defined(__i386__) && defined(__PIC__)
-+ "push %%ebx\n"
-+ "cpuid\n"
-+ "movl %%ebx, %1\n"
-+ "pop %%ebx\n"
-+#else
-+ "cpuid\n"
-+#endif
- : "=a" (*eax),
-+#if defined(__i386__) && defined(__PIC__)
-+ "=r" (*ebx),
-+#else
- "=b" (*ebx),
-+#endif
- "=c" (*ecx),
- "=d" (*edx)
- : "0" (*eax), "2" (*ecx));
---
-1.7.10
-
diff --git a/src/patches/cpufrequtils/0007-po-add-missing-word-in-DE.patch b/src/patches/cpufrequtils/0007-po-add-missing-word-in-DE.patch
deleted file mode 100644
index d116791b1..000000000
--- a/src/patches/cpufrequtils/0007-po-add-missing-word-in-DE.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 26ce99ab92ae9f1f367a58b7858a96f4e1e6814c Mon Sep 17 00:00:00 2001
-From: Dominik Brodowski <linux@dominikbrodowski.net>
-Date: Fri, 29 Jul 2011 19:40:46 +0200
-Subject: [PATCH 7/8] po: add missing word in DE
-
-Reported-by: Michael Basse
-Reported-by: <tkranz@zedat.fu-berlin.de>
-Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
----
- po/de.po | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/po/de.po b/po/de.po
-index 1da1f2b..ee793f5 100644
---- a/po/de.po
-+++ b/po/de.po
-@@ -304,7 +304,7 @@ msgid ""
- "modified\n"
- msgstr ""
- " -c CPU, --cpu CPU Nummer der CPU, deren Taktfrequenz-Einstellung\n"
--" werden soll\n"
-+" verändert werden soll\n"
-
- #: utils/set.c:39
- #, c-format
---
-1.7.10
-
--
2.39.5
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/3] initscripts: Automatically enable CPU power saving features
2025-07-17 17:30 [PATCH 1/3] initscripts: Automatically enable CPU power saving features Michael Tremer
2025-07-17 17:30 ` [PATCH 2/3] cpufrequtils: Drop package Michael Tremer
2025-07-17 17:30 ` [PATCH 3/3] cpufrequtils: Drop unused patches Michael Tremer
@ 2025-07-20 14:05 ` Charles Brown
2 siblings, 0 replies; 4+ messages in thread
From: Charles Brown @ 2025-07-20 14:05 UTC (permalink / raw)
To: development
Just curious about find_governor() ... how/where would the variable
"GOVERNOR" be getting configured?
On 7/17/2025 12:30 PM, Michael Tremer wrote:
> This is a cleaned up implementation of the script that was previously
> packaged in the cpufrequtils package.
>
> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
> ---
> config/rootfiles/common/aarch64/initscripts | 2 +
> config/rootfiles/common/riscv64/initscripts | 2 +
> config/rootfiles/common/x86_64/initscripts | 2 +
> lfs/initscripts | 1 +
> src/initscripts/system/cpupower | 89 +++++++++++++++++++++
> 5 files changed, 96 insertions(+)
> create mode 100644 src/initscripts/system/cpupower
>
> diff --git a/config/rootfiles/common/aarch64/initscripts b/config/rootfiles/common/aarch64/initscripts
> index 1fd1f076f..fa43d4fe1 100644
> --- a/config/rootfiles/common/aarch64/initscripts
> +++ b/config/rootfiles/common/aarch64/initscripts
> @@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
> etc/rc.d/init.d/connectd
> etc/rc.d/init.d/conntrackd
> etc/rc.d/init.d/console
> +etc/rc.d/init.d/cpupower
> etc/rc.d/init.d/dhcp
> etc/rc.d/init.d/dhcrelay
> etc/rc.d/init.d/fcron
> @@ -183,6 +184,7 @@ etc/rc.d/rcsysinit.d/S42fsresize
> etc/rc.d/rcsysinit.d/S43mounttmpfs
> etc/rc.d/rcsysinit.d/S44smt
> etc/rc.d/rcsysinit.d/S45udev_retry
> +etc/rc.d/rcsysinit.d/S46cpupower
> etc/rc.d/rcsysinit.d/S50cleanfs
> etc/rc.d/rcsysinit.d/S60setclock
> etc/rc.d/rcsysinit.d/S70console
> diff --git a/config/rootfiles/common/riscv64/initscripts b/config/rootfiles/common/riscv64/initscripts
> index 694207257..a31359134 100644
> --- a/config/rootfiles/common/riscv64/initscripts
> +++ b/config/rootfiles/common/riscv64/initscripts
> @@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
> etc/rc.d/init.d/connectd
> etc/rc.d/init.d/conntrackd
> etc/rc.d/init.d/console
> +etc/rc.d/init.d/cpupower
> etc/rc.d/init.d/dhcp
> etc/rc.d/init.d/dhcrelay
> etc/rc.d/init.d/fcron
> @@ -182,6 +183,7 @@ etc/rc.d/rcsysinit.d/S42fsresize
> etc/rc.d/rcsysinit.d/S43mounttmpfs
> etc/rc.d/rcsysinit.d/S44smt
> etc/rc.d/rcsysinit.d/S45udev_retry
> +etc/rc.d/rcsysinit.d/S46cpupower
> etc/rc.d/rcsysinit.d/S50cleanfs
> etc/rc.d/rcsysinit.d/S60setclock
> etc/rc.d/rcsysinit.d/S70console
> diff --git a/config/rootfiles/common/x86_64/initscripts b/config/rootfiles/common/x86_64/initscripts
> index 694207257..a31359134 100644
> --- a/config/rootfiles/common/x86_64/initscripts
> +++ b/config/rootfiles/common/x86_64/initscripts
> @@ -18,6 +18,7 @@ etc/rc.d/init.d/collectd
> etc/rc.d/init.d/connectd
> etc/rc.d/init.d/conntrackd
> etc/rc.d/init.d/console
> +etc/rc.d/init.d/cpupower
> etc/rc.d/init.d/dhcp
> etc/rc.d/init.d/dhcrelay
> etc/rc.d/init.d/fcron
> @@ -182,6 +183,7 @@ etc/rc.d/rcsysinit.d/S42fsresize
> etc/rc.d/rcsysinit.d/S43mounttmpfs
> etc/rc.d/rcsysinit.d/S44smt
> etc/rc.d/rcsysinit.d/S45udev_retry
> +etc/rc.d/rcsysinit.d/S46cpupower
> etc/rc.d/rcsysinit.d/S50cleanfs
> etc/rc.d/rcsysinit.d/S60setclock
> etc/rc.d/rcsysinit.d/S70console
> diff --git a/lfs/initscripts b/lfs/initscripts
> index 99fe2f1be..49215c0ae 100644
> --- a/lfs/initscripts
> +++ b/lfs/initscripts
> @@ -176,6 +176,7 @@ $(TARGET) :
> ln -sf ../init.d/mounttmpfs /etc/rc.d/rcsysinit.d/S43mounttmpfs
> ln -sf ../init.d/smt /etc/rc.d/rcsysinit.d/S44smt
> ln -sf ../init.d/udev_retry /etc/rc.d/rcsysinit.d/S45udev_retry
> + ln -sf ../init.d/cpupower /etc/rc.d/rcsysinit.d/S46cpupower
> ln -sf ../init.d/cleanfs /etc/rc.d/rcsysinit.d/S50cleanfs
> ln -sf ../init.d/setclock /etc/rc.d/rcsysinit.d/S60setclock
> ln -sf ../init.d/console /etc/rc.d/rcsysinit.d/S70console
> diff --git a/src/initscripts/system/cpupower b/src/initscripts/system/cpupower
> new file mode 100644
> index 000000000..82b62a89b
> --- /dev/null
> +++ b/src/initscripts/system/cpupower
> @@ -0,0 +1,89 @@
> +#!/bin/sh
> +###############################################################################
> +# #
> +# IPFire.org - A linux based firewall #
> +# Copyright (C) 2025 IPFire Team <info@ipfire.org> #
> +# #
> +# This program is free software: you can redistribute it and/or modify #
> +# it under the terms of the GNU General Public License as published by #
> +# the Free Software Foundation, either version 3 of the License, or #
> +# (at your option) any later version. #
> +# #
> +# This program is distributed in the hope that 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. #
> +# #
> +# You should have received a copy of the GNU General Public License #
> +# along with this program. If not, see <http://www.gnu.org/licenses/>. #
> +# #
> +###############################################################################
> +
> +. /etc/sysconfig/rc
> +. ${rc_functions}
> +
> +# Load the configuration if it exists
> +if [ -r "/etc/sysconfig/cpupower" ]; then
> + . /etc/sysconfig/cpupower
> +fi
> +
> +# This function returns which governor to use
> +find_governor() {
> + local driver
> +
> + # If a governor has been configured, we just use that one
> + if [ -n "${GOVERNOR}" ]; then
> + echo "${GOVERNOR}"
> + return 0
> + fi
> +
> + # Determine the driver
> + if [ -r "/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver" ]; then
> + driver="$(</sys/devices/system/cpu/cpu0/cpufreq/scaling_driver)"
> + fi
> +
> + # Decide which governor to use based on the driver
> + case "${driver}" in
> + # If the driver could not be detected, we won't use anything
> + "")
> + ;;
> +
> + # Intel P-State only supports performace and powersave. The latter
> + # is rather implemented like ondemand in other cases.
> + intel_pstate)
> + echo "powersave"
> + ;;
> +
> + # For everything else use schedutil
> + *)
> + echo "schedutil"
> + ;;
> + esac
> +
> + return 0
> +}
> +
> +set_governor() {
> + # Find the governor to use
> + local governor="$(find_governor)"
> +
> + # If we could not detect a governor we don't have anything to do
> + if [ -z "${governor}" ]; then
> + return 0
> + fi
> +
> + # Set the governor
> + cpupower frequency-set --governor "${governor}" >/dev/null
> +}
> +
> +case "${1}" in
> + start)
> + boot_mesg "Enabling CPU Power Saving Features..."
> + set_governor
> + evaluate_retval
> + ;;
> + *)
> + echo "Usage: ${0} {start}"
> + exit 1
> + ;;
> +esac
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-07-20 14:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-17 17:30 [PATCH 1/3] initscripts: Automatically enable CPU power saving features Michael Tremer
2025-07-17 17:30 ` [PATCH 2/3] cpufrequtils: Drop package Michael Tremer
2025-07-17 17:30 ` [PATCH 3/3] cpufrequtils: Drop unused patches Michael Tremer
2025-07-20 14:05 ` [PATCH 1/3] initscripts: Automatically enable CPU power saving features Charles Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox