Skip to content

Commit

Permalink
Merge branch 'pm-tools'
Browse files Browse the repository at this point in the history
Merge power management utilities updates for 6.13-rc1:

 - Update pm-graph to v5.13 (Todd Brandt).

 - Add documentation for some recently introduced cpupower utility
   options (Tor Vic).

 - Make cpupower inform users where cpufreq-bench.conf should be located
   when opening it fails (Peng Fan).

 - Allow overriding cross-compiling env params in cpupower (Peng Fan).

 - Add compile_commands.json to .gitignore in cpupower (John B. Wyatt
   IV).

 - Improve disable c_state block in cpupower bindings and add a test to
   confirm that CPU state is disabled to it (John B. Wyatt IV).

 - Add Chinese Simplified translation to cpupower (Kieran Moy).

 - Add checks for xgettext and msgfmt to cpupower (Siddharth Menon).

* pm-tools:
  cpupower: add checks for xgettext and msgfmt
  cpupower: Add Chinese Simplified translation
  pm-graph v5.13
  pm: cpupower: bindings: Add test to confirm cpu state is disabled
  pm: cpupower: bindings: Improve disable c_state block
  pm: cpupower: gitignore: Add compile_commands.json
  pm: cpupower: Makefile: Allow overriding cross-compiling env params
  pm: cpupower: bench: print config file path when open cpufreq-bench.conf fails
  tools/power/cpupower: Add documentation for some recently introduced options
  • Loading branch information
Rafael J. Wysocki committed Nov 15, 2024
2 parents 923c256 + 7954c4f commit c6e2a4c
Show file tree
Hide file tree
Showing 8 changed files with 1,072 additions and 32 deletions.
3 changes: 3 additions & 0 deletions tools/power/cpupower/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@ debug/i386/intel_gsic
debug/i386/powernow-k8-decode
debug/x86_64/centrino-decode
debug/x86_64/powernow-k8-decode

# Clang's compilation database file
compile_commands.json
26 changes: 19 additions & 7 deletions tools/power/cpupower/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ LIB_MIN= 1

PACKAGE = cpupower
PACKAGE_BUGREPORT = linux-pm@vger.kernel.org
LANGUAGES = de fr it cs pt ka
LANGUAGES = de fr it cs pt ka zh_CN


# Directory definitions. These are default and most probably
Expand Down Expand Up @@ -86,12 +86,12 @@ INSTALL_SCRIPT = ${INSTALL} -m 644
# If you are running a cross compiler, you may want to set this
# to something more interesting, like "arm-linux-". If you want
# to compile vs uClibc, that can be done here as well.
CROSS = #/usr/i386-linux-uclibc/usr/bin/i386-uclibc-
CC = $(CROSS)gcc
LD = $(CROSS)gcc
AR = $(CROSS)ar
STRIP = $(CROSS)strip
RANLIB = $(CROSS)ranlib
CROSS ?= #/usr/i386-linux-uclibc/usr/bin/i386-uclibc-
CC ?= $(CROSS)gcc
LD ?= $(CROSS)gcc
AR ?= $(CROSS)ar
STRIP ?= $(CROSS)strip
RANLIB ?= $(CROSS)ranlib
HOSTCC = gcc
MKDIR = mkdir

Expand Down Expand Up @@ -218,17 +218,28 @@ else
endif
$(QUIET) $(STRIPCMD) $@

ifeq (, $(shell which xgettext))
$(warning "Install xgettext to extract translatable strings.")
else
$(OUTPUT)po/$(PACKAGE).pot: $(UTIL_SRC)
$(ECHO) " GETTEXT " $@
$(QUIET) xgettext --default-domain=$(PACKAGE) --add-comments \
--keyword=_ --keyword=N_ $(UTIL_SRC) -p $(@D) -o $(@F)
endif

ifeq (, $(shell which msgfmt))
$(warning "Install msgfmt to generate binary message catalogs.")
else
$(OUTPUT)po/%.gmo: po/%.po
$(ECHO) " MSGFMT " $@
$(QUIET) msgfmt -o $@ po/$*.po
endif

create-gmo: ${GMO_FILES}

ifeq (, $(shell which msgmerge))
$(warning "Install msgmerge to merge translations.")
else
update-po: $(OUTPUT)po/$(PACKAGE).pot
$(ECHO) " MSGMRG " $@
$(QUIET) @for HLANG in $(LANGUAGES); do \
Expand All @@ -241,6 +252,7 @@ update-po: $(OUTPUT)po/$(PACKAGE).pot
rm -f $(OUTPUT)po/$$HLANG.new.po; \
fi; \
done;
endif

compile-bench: $(OUTPUT)libcpupower.so.$(LIB_MAJ)
@V=$(V) confdir=$(confdir) $(MAKE) -C bench O=$(OUTPUT)
Expand Down
5 changes: 3 additions & 2 deletions tools/power/cpupower/bench/parse.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Copyright (C) 2008 Christian Kornacker <ckornacker@suse.de>
*/

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
Expand Down Expand Up @@ -165,8 +166,8 @@ int prepare_config(const char *path, struct config *config)

configfile = fopen(path, "r");
if (configfile == NULL) {
perror("fopen");
fprintf(stderr, "error: unable to read configfile\n");
fprintf(stderr, "error: unable to read configfile: %s, %s\n",
path, strerror(errno));
free(config);
return 1;
}
Expand Down
28 changes: 22 additions & 6 deletions tools/power/cpupower/bindings/python/test_raw_pylibcpupower.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,38 @@
print(f"cstate count error: return code: {cpu_cstates_count}")

"""
Disable cstate (will fail if the above is 0, ex: a virtual machine)
Disable cstate (will fail if the above returns is under 1, ex: a virtual machine)
"""
cstate_disabled = p.cpuidle_state_disable(0, 0, 1)
if cpu_cstates_count == 0:
print(f"CPU 0 has {cpu_cstates_count} c-states")
else:
print(f"cstate count error: return code: {cpu_cstates_count}")

match cstate_disabled:
case 0:
print(f"CPU state disabled")
case -1:
print(f"Idlestate not available")
case -2:
print(f"Disabling is not supported by the kernel")
case -3:
print(f"No write access to disable/enable C-states: try using sudo")
case _:
print(f"Not documented")
print(f"Not documented: {cstate_disabled}")

"""
Test cstate is disabled
"""
is_cstate_disabled = p.cpuidle_is_state_disabled(0, 0)

match is_cstate_disabled:
case 1:
print(f"CPU is disabled")
case 0:
print(f"CPU is enabled")
case -1:
print(f"Idlestate not available")
case -2:
print(f"Disabling is not supported by kernel")
case _:
print(f"Not documented: {is_cstate_disabled}")

# Pointer example

Expand Down
38 changes: 36 additions & 2 deletions tools/power/cpupower/man/cpupower-set.1
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
cpupower\-set \- Set processor power related kernel or hardware configurations
.SH SYNOPSIS
.ft B
.B cpupower set [ \-b VAL ]
.B cpupower set [ \-b VAL | \-e POLICY | \-m MODE | \-t BOOL ]


.SH DESCRIPTION
Expand All @@ -19,7 +19,7 @@ described in the Options sections.
Use \fBcpupower info \fP to read out current settings and whether they are
supported on the system at all.

.SH Options
.SH OPTIONS
.PP
\-\-perf-bias, \-b
.RS 4
Expand Down Expand Up @@ -56,6 +56,40 @@ Use \fBcpupower -c all info -b\fP to verify.
This options needs the msr kernel driver (CONFIG_X86_MSR) loaded.
.RE

.PP
\-\-epp, \-e
.RS 4
Sets the energy performance policy preference on supported Intel or AMD
processors which use the Intel or AMD P-State cpufreq driver respectively.

Available policies can be found with
\fBcat /sys/devices/system/cpu/cpufreq/policy0/energy_performance_available_preferences\fP :
.RS 4
default performance balance_performance balance_power power
.RE

.RE

.PP
\-\-amd\-pstate\-mode, \-m
.RS 4
Sets the AMD P-State mode for supported AMD processors.
Available modes are "active", "guided" or "passive".

Refer to the AMD P-State kernel documentation for further information.

.RE

.PP
\-\-turbo\-boost, \-t
.RS 4
This option is used to enable or disable the turbo boost feature on
supported Intel and AMD processors.

This option takes as parameter either \fB1\fP to enable, or \fB0\fP to disable the feature.

.RE

.SH "SEE ALSO"
cpupower-info(1), cpupower-monitor(1), powertop(1)
.PP
Expand Down
Loading

0 comments on commit c6e2a4c

Please sign in to comment.