mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 13:30:45 -05:00
Merge branch 'pm-tools'
Merge a cpupower utility update for 6.16-rc1 that adds a systemd service to run cpupower and changes binding's Makefile to use -lcpupower (John B. Wyatt IV, Francesco Poli). * pm-tools: cpupower: do not install files to /etc/default/ cpupower: do not call systemctl at install time cpupower: do not write DESTDIR to cpupower.service cpupower: change binding's makefile to use -lcpupower cpupower: add a systemd service to run cpupower
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
# Makefile for cpupower
|
||||
#
|
||||
# Copyright (C) 2005,2006 Dominik Brodowski <linux@dominikbrodowski.net>
|
||||
# Copyright (C) 2025 Francesco Poli <invernomuto@paranoici.org>
|
||||
#
|
||||
# Based largely on the Makefile for udev by:
|
||||
#
|
||||
@@ -71,6 +72,7 @@ bindir ?= /usr/bin
|
||||
sbindir ?= /usr/sbin
|
||||
mandir ?= /usr/man
|
||||
libdir ?= /usr/lib
|
||||
libexecdir ?= /usr/libexec
|
||||
includedir ?= /usr/include
|
||||
localedir ?= /usr/share/locale
|
||||
docdir ?= /usr/share/doc/packages/cpupower
|
||||
@@ -83,6 +85,7 @@ CP = cp -fpR
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
SETPERM_DATA = chmod 644
|
||||
#bash completion scripts get sourced and so they should be rw only.
|
||||
INSTALL_SCRIPT = ${INSTALL} -m 644
|
||||
|
||||
@@ -302,6 +305,13 @@ install-tools: $(OUTPUT)cpupower
|
||||
$(INSTALL_PROGRAM) $(OUTPUT)cpupower $(DESTDIR)${bindir}
|
||||
$(INSTALL) -d $(DESTDIR)${bash_completion_dir}
|
||||
$(INSTALL_SCRIPT) cpupower-completion.sh '$(DESTDIR)${bash_completion_dir}/cpupower'
|
||||
$(INSTALL) -d $(DESTDIR)${confdir}
|
||||
$(INSTALL_DATA) cpupower-service.conf '$(DESTDIR)${confdir}'
|
||||
$(INSTALL) -d $(DESTDIR)${libexecdir}
|
||||
$(INSTALL_PROGRAM) cpupower.sh '$(DESTDIR)${libexecdir}/cpupower'
|
||||
$(INSTALL) -d $(DESTDIR)${libdir}/systemd/system
|
||||
sed 's|___CDIR___|${confdir}|; s|___LDIR___|${libexecdir}|' cpupower.service.in > '$(DESTDIR)${libdir}/systemd/system/cpupower.service'
|
||||
$(SETPERM_DATA) '$(DESTDIR)${libdir}/systemd/system/cpupower.service'
|
||||
|
||||
install-man:
|
||||
$(INSTALL_DATA) -D man/cpupower.1 $(DESTDIR)${mandir}/man1/cpupower.1
|
||||
@@ -336,6 +346,9 @@ uninstall:
|
||||
- rm -f $(DESTDIR)${includedir}/cpufreq.h
|
||||
- rm -f $(DESTDIR)${includedir}/cpuidle.h
|
||||
- rm -f $(DESTDIR)${bindir}/utils/cpupower
|
||||
- rm -f $(DESTDIR)${confdir}cpupower-service.conf
|
||||
- rm -f $(DESTDIR)${libexecdir}/cpupower
|
||||
- rm -f $(DESTDIR)${libdir}/systemd/system/cpupower.service
|
||||
- rm -f $(DESTDIR)${mandir}/man1/cpupower.1
|
||||
- rm -f $(DESTDIR)${mandir}/man1/cpupower-frequency-set.1
|
||||
- rm -f $(DESTDIR)${mandir}/man1/cpupower-frequency-info.1
|
||||
|
||||
@@ -59,6 +59,10 @@ $ sudo make install
|
||||
-----------------------------------------------------------------------
|
||||
| man pages | /usr/man |
|
||||
-----------------------------------------------------------------------
|
||||
| systemd service | /usr/lib/systemd/system |
|
||||
-----------------------------------------------------------------------
|
||||
| systemd support script | /usr/libexec |
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
To put it in other words it makes build results available system-wide,
|
||||
enabling any user to simply start using it without any additional steps
|
||||
@@ -109,6 +113,10 @@ The files will be installed to the following dirs:
|
||||
-----------------------------------------------------------------------
|
||||
| man pages | ${DESTDIR}/usr/man |
|
||||
-----------------------------------------------------------------------
|
||||
| systemd service | ${DESTDIR}/usr/lib/systemd/system |
|
||||
-----------------------------------------------------------------------
|
||||
| systemd support script | ${DESTDIR}/usr/libexec |
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
If you look at the table for the default 'make' output dirs you will
|
||||
notice that the only difference with the non-default case is the
|
||||
@@ -173,6 +181,26 @@ The issue is that binary cannot find the 'libcpupower' library. So, we
|
||||
shall point to the lib dir:
|
||||
sudo LD_LIBRARY_PATH=lib64/ ./bin/cpupower
|
||||
|
||||
systemd service
|
||||
---------------
|
||||
|
||||
A systemd service is also provided to run the cpupower utility at boot with
|
||||
settings read from a configuration file.
|
||||
|
||||
If you want systemd to find the new service after the installation, the service
|
||||
unit must have been installed in one of the system unit search path directories
|
||||
(such as '/usr/lib/systemd/system/', which is the default location) and (unless
|
||||
you are willing to wait for the next reboot) you need to issue the following
|
||||
command:
|
||||
|
||||
$ sudo systemctl daemon-reload
|
||||
|
||||
If you want to enable this systemd service, edit '/etc/cpupower-service.conf'
|
||||
(uncommenting at least one of the options, depending on your preferences)
|
||||
and then issue the following command:
|
||||
|
||||
$ sudo systemctl enable --now cpupower.service
|
||||
|
||||
|
||||
THANKS
|
||||
------
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
# Makefile for libcpupower's Python bindings
|
||||
#
|
||||
# This Makefile expects you have already run the makefile for cpupower to build
|
||||
# the .o files in the lib directory for the bindings to be created.
|
||||
# This Makefile expects you have already run `make install-lib` in the lib
|
||||
# directory for the bindings to be created.
|
||||
|
||||
CC := gcc
|
||||
HAVE_SWIG := $(shell if which swig >/dev/null 2>&1; then echo 1; else echo 0; fi)
|
||||
HAVE_PYCONFIG := $(shell if which python-config >/dev/null 2>&1; then echo 1; else echo 0; fi)
|
||||
|
||||
LIB_DIR := ../../lib
|
||||
PY_INCLUDE = $(firstword $(shell python-config --includes))
|
||||
OBJECTS_LIB = $(wildcard $(LIB_DIR)/*.o)
|
||||
INSTALL_DIR = $(shell python3 -c "import site; print(site.getsitepackages()[0])")
|
||||
|
||||
all: _raw_pylibcpupower.so
|
||||
|
||||
_raw_pylibcpupower.so: raw_pylibcpupower_wrap.o
|
||||
$(CC) -shared $(OBJECTS_LIB) raw_pylibcpupower_wrap.o -o _raw_pylibcpupower.so
|
||||
$(CC) -shared -lcpupower raw_pylibcpupower_wrap.o -o _raw_pylibcpupower.so
|
||||
|
||||
raw_pylibcpupower_wrap.o: raw_pylibcpupower_wrap.c
|
||||
$(CC) -fPIC -c raw_pylibcpupower_wrap.c $(PY_INCLUDE)
|
||||
|
||||
@@ -5,18 +5,21 @@ libcpupower (aside from the libcpupower object files).
|
||||
requirements
|
||||
------------
|
||||
|
||||
* You need the object files in the libcpupower directory compiled by
|
||||
cpupower's makefile.
|
||||
* If you are building completely from upstream; please install libcpupower by
|
||||
running `make install-lib` within the cpupower directory. This installs the
|
||||
libcpupower.so file and symlinks needed. Otherwise, please make sure a symlink
|
||||
to libcpupower.so exists in your library path from your distribution's
|
||||
packages.
|
||||
* The SWIG program must be installed.
|
||||
* The Python's development libraries installed.
|
||||
* The Python's development libraries must be installed.
|
||||
|
||||
Please check that your version of SWIG is compatible with the version of Python
|
||||
installed on your machine by checking the SWIG changelog on their website.
|
||||
https://swig.org/
|
||||
|
||||
Note that while SWIG itself is GPL v3+ licensed; the resulting output,
|
||||
the bindings code: is permissively licensed + the license of libcpupower's .o
|
||||
files. For these bindings that means GPL v2.
|
||||
the bindings code: is permissively licensed + the license of libcpupower's
|
||||
library files. For these bindings that means GPL v2.
|
||||
|
||||
Please see https://swig.org/legal.html and the discussion [1] for more details.
|
||||
|
||||
|
||||
32
tools/power/cpupower/cpupower-service.conf
Normal file
32
tools/power/cpupower/cpupower-service.conf
Normal file
@@ -0,0 +1,32 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2012, Sébastien Luttringer
|
||||
# Copyright (C) 2024-2025, Francesco Poli <invernomuto@paranoici.org>
|
||||
|
||||
# Configuration file for cpupower.service systemd service unit
|
||||
#
|
||||
# Edit this file (uncommenting at least one of the options, depending on
|
||||
# your preferences) and then enable cpupower.service, if you want cpupower
|
||||
# to run at boot with these settings.
|
||||
|
||||
# --- CPU clock frequency ---
|
||||
|
||||
# Define CPU governor
|
||||
# Valid governors: ondemand, performance, powersave, conservative, userspace
|
||||
#GOVERNOR='ondemand'
|
||||
|
||||
# Limit frequency range
|
||||
# Valid suffixes: Hz, kHz (default), MHz, GHz, THz
|
||||
#MIN_FREQ="2.25GHz"
|
||||
#MAX_FREQ="3GHz"
|
||||
|
||||
# Set a specific frequency
|
||||
# Requires userspace governor to be available.
|
||||
# If this option is set, all the previous frequency options are ignored
|
||||
#FREQ=
|
||||
|
||||
# --- CPU policy ---
|
||||
|
||||
# Set a register on supported Intel processore which allows software to convey
|
||||
# its policy for the relative importance of performance versus energy savings to
|
||||
# the processor. See man CPUPOWER-SET(1) for additional details
|
||||
#PERF_BIAS=
|
||||
16
tools/power/cpupower/cpupower.service.in
Normal file
16
tools/power/cpupower/cpupower.service.in
Normal file
@@ -0,0 +1,16 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2012-2020, Sébastien Luttringer
|
||||
# Copyright (C) 2024-2025, Francesco Poli <invernomuto@paranoici.org>
|
||||
|
||||
[Unit]
|
||||
Description=Apply cpupower configuration
|
||||
ConditionVirtualization=!container
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
EnvironmentFile=-___CDIR___cpupower-service.conf
|
||||
ExecStart=___LDIR___/cpupower
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
26
tools/power/cpupower/cpupower.sh
Normal file
26
tools/power/cpupower/cpupower.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2012, Sébastien Luttringer
|
||||
# Copyright (C) 2024, Francesco Poli <invernomuto@paranoici.org>
|
||||
|
||||
ESTATUS=0
|
||||
|
||||
# apply CPU clock frequency options
|
||||
if test -n "$FREQ"
|
||||
then
|
||||
cpupower frequency-set -f "$FREQ" > /dev/null || ESTATUS=1
|
||||
elif test -n "${GOVERNOR}${MIN_FREQ}${MAX_FREQ}"
|
||||
then
|
||||
cpupower frequency-set \
|
||||
${GOVERNOR:+ -g "$GOVERNOR"} \
|
||||
${MIN_FREQ:+ -d "$MIN_FREQ"} ${MAX_FREQ:+ -u "$MAX_FREQ"} \
|
||||
> /dev/null || ESTATUS=1
|
||||
fi
|
||||
|
||||
# apply CPU policy options
|
||||
if test -n "$PERF_BIAS"
|
||||
then
|
||||
cpupower set -b "$PERF_BIAS" > /dev/null || ESTATUS=1
|
||||
fi
|
||||
|
||||
exit $ESTATUS
|
||||
Reference in New Issue
Block a user