diff --git a/cpupower-remove_mc_scheduler_bits.patch b/cpupower-remove_mc_scheduler_bits.patch new file mode 100644 index 0000000..2702ae9 --- /dev/null +++ b/cpupower-remove_mc_scheduler_bits.patch @@ -0,0 +1,234 @@ +cpupower: Remove mc and smt power aware scheduler info/settings + +These kernel interfaces got removed by: +commit 8e7fbcbc22c12414bcc9dfdd683637f58fb32759 +Author: Peter Zijlstra +Date: Mon Jan 9 11:28:35 2012 +0100 + + sched: Remove stale power aware scheduling remnants and dysfunctional knobs + +No need to further keep them as userspace configurations. + +Signed-off-by: Thomas Renninger + +diff --git a/tools/power/cpupower/man/cpupower-info.1 b/tools/power/cpupower/man/cpupower-info.1 +index 58e2119..340bcd0 100644 +--- a/tools/power/cpupower/man/cpupower-info.1 ++++ b/tools/power/cpupower/man/cpupower-info.1 +@@ -3,7 +3,7 @@ + cpupower\-info \- Shows processor power related kernel or hardware configurations + .SH SYNOPSIS + .ft B +-.B cpupower info [ \-b ] [ \-s ] [ \-m ] ++.B cpupower info [ \-b ] + + .SH DESCRIPTION + \fBcpupower info \fP shows kernel configurations or processor hardware +diff --git a/tools/power/cpupower/man/cpupower-set.1 b/tools/power/cpupower/man/cpupower-set.1 +index 9dbd536..2bcc696 100644 +--- a/tools/power/cpupower/man/cpupower-set.1 ++++ b/tools/power/cpupower/man/cpupower-set.1 +@@ -3,7 +3,7 @@ + cpupower\-set \- Set processor power related kernel or hardware configurations + .SH SYNOPSIS + .ft B +-.B cpupower set [ \-b VAL ] [ \-s VAL ] [ \-m VAL ] ++.B cpupower set [ \-b VAL ] + + + .SH DESCRIPTION +@@ -55,35 +55,6 @@ Use \fBcpupower -c all info -b\fP to verify. + + This options needs the msr kernel driver (CONFIG_X86_MSR) loaded. + .RE +-.PP +-\-\-sched\-mc, \-m [ VAL ] +-.RE +-\-\-sched\-smt, \-s [ VAL ] +-.RS 4 +-\-\-sched\-mc utilizes cores in one processor package/socket first before +-processes are scheduled to other processor packages/sockets. +- +-\-\-sched\-smt utilizes thread siblings of one processor core first before +-processes are scheduled to other cores. +- +-The impact on power consumption and performance (positiv or negativ) heavily +-depends on processor support for deep sleep states, frequency scaling and +-frequency boost modes and their dependencies between other thread siblings +-and processor cores. +- +-Taken over from kernel documentation: +- +-Adjust the kernel's multi-core scheduler support. +- +-Possible values are: +-.RS 2 +-0 - No power saving load balance (default value) +- +-1 - Fill one thread/core/package first for long running threads +- +-2 - Also bias task wakeups to semi-idle cpu package for power +-savings +-.RE + + .SH "SEE ALSO" + cpupower-info(1), cpupower-monitor(1), powertop(1) +diff --git a/tools/power/cpupower/utils/cpupower-info.c b/tools/power/cpupower/utils/cpupower-info.c +index 0ac2577..136d979 100644 +--- a/tools/power/cpupower/utils/cpupower-info.c ++++ b/tools/power/cpupower/utils/cpupower-info.c +@@ -18,8 +18,6 @@ + + static struct option set_opts[] = { + { .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'}, +- { .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'}, +- { .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'}, + { }, + }; + +@@ -37,8 +35,6 @@ int cmd_info(int argc, char **argv) + + union { + struct { +- int sched_mc:1; +- int sched_smt:1; + int perf_bias:1; + }; + int params; +@@ -49,23 +45,13 @@ int cmd_info(int argc, char **argv) + textdomain(PACKAGE); + + /* parameter parsing */ +- while ((ret = getopt_long(argc, argv, "msb", set_opts, NULL)) != -1) { ++ while ((ret = getopt_long(argc, argv, "b", set_opts, NULL)) != -1) { + switch (ret) { + case 'b': + if (params.perf_bias) + print_wrong_arg_exit(); + params.perf_bias = 1; + break; +- case 'm': +- if (params.sched_mc) +- print_wrong_arg_exit(); +- params.sched_mc = 1; +- break; +- case 's': +- if (params.sched_smt) +- print_wrong_arg_exit(); +- params.sched_smt = 1; +- break; + default: + print_wrong_arg_exit(); + } +@@ -78,25 +64,6 @@ int cmd_info(int argc, char **argv) + if (bitmask_isallclear(cpus_chosen)) + bitmask_setbit(cpus_chosen, 0); + +- if (params.sched_mc) { +- ret = sysfs_get_sched("mc"); +- printf(_("System's multi core scheduler setting: ")); +- if (ret < 0) +- /* if sysfs file is missing it's: errno == ENOENT */ +- printf(_("not supported\n")); +- else +- printf("%d\n", ret); +- } +- if (params.sched_smt) { +- ret = sysfs_get_sched("smt"); +- printf(_("System's thread sibling scheduler setting: ")); +- if (ret < 0) +- /* if sysfs file is missing it's: errno == ENOENT */ +- printf(_("not supported\n")); +- else +- printf("%d\n", ret); +- } +- + /* Add more per cpu options here */ + if (!params.perf_bias) + return ret; +diff --git a/tools/power/cpupower/utils/cpupower-set.c b/tools/power/cpupower/utils/cpupower-set.c +index bcf1d2f..573c75f 100644 +--- a/tools/power/cpupower/utils/cpupower-set.c ++++ b/tools/power/cpupower/utils/cpupower-set.c +@@ -19,8 +19,6 @@ + + static struct option set_opts[] = { + { .name = "perf-bias", .has_arg = required_argument, .flag = NULL, .val = 'b'}, +- { .name = "sched-mc", .has_arg = required_argument, .flag = NULL, .val = 'm'}, +- { .name = "sched-smt", .has_arg = required_argument, .flag = NULL, .val = 's'}, + { }, + }; + +@@ -38,13 +36,11 @@ int cmd_set(int argc, char **argv) + + union { + struct { +- int sched_mc:1; +- int sched_smt:1; + int perf_bias:1; + }; + int params; + } params; +- int sched_mc = 0, sched_smt = 0, perf_bias = 0; ++ int perf_bias = 0; + int ret = 0; + + setlocale(LC_ALL, ""); +@@ -52,7 +48,7 @@ int cmd_set(int argc, char **argv) + + params.params = 0; + /* parameter parsing */ +- while ((ret = getopt_long(argc, argv, "m:s:b:", ++ while ((ret = getopt_long(argc, argv, "b:", + set_opts, NULL)) != -1) { + switch (ret) { + case 'b': +@@ -66,28 +62,6 @@ int cmd_set(int argc, char **argv) + } + params.perf_bias = 1; + break; +- case 'm': +- if (params.sched_mc) +- print_wrong_arg_exit(); +- sched_mc = atoi(optarg); +- if (sched_mc < 0 || sched_mc > 2) { +- printf(_("--sched-mc param out " +- "of range [0-%d]\n"), 2); +- print_wrong_arg_exit(); +- } +- params.sched_mc = 1; +- break; +- case 's': +- if (params.sched_smt) +- print_wrong_arg_exit(); +- sched_smt = atoi(optarg); +- if (sched_smt < 0 || sched_smt > 2) { +- printf(_("--sched-smt param out " +- "of range [0-%d]\n"), 2); +- print_wrong_arg_exit(); +- } +- params.sched_smt = 1; +- break; + default: + print_wrong_arg_exit(); + } +@@ -96,19 +70,6 @@ int cmd_set(int argc, char **argv) + if (!params.params) + print_wrong_arg_exit(); + +- if (params.sched_mc) { +- ret = sysfs_set_sched("mc", sched_mc); +- if (ret) +- fprintf(stderr, _("Error setting sched-mc %s\n"), +- (ret == -ENODEV) ? "not supported" : ""); +- } +- if (params.sched_smt) { +- ret = sysfs_set_sched("smt", sched_smt); +- if (ret) +- fprintf(stderr, _("Error setting sched-smt %s\n"), +- (ret == -ENODEV) ? "not supported" : ""); +- } +- + /* Default is: set all CPUs */ + if (bitmask_isallclear(cpus_chosen)) + bitmask_setall(cpus_chosen); diff --git a/cpupower-return_zero_on_success.patch b/cpupower-return_zero_on_success.patch new file mode 100644 index 0000000..9f17c71 --- /dev/null +++ b/cpupower-return_zero_on_success.patch @@ -0,0 +1,23 @@ +cpupower: cpupower info -b should return 0 on success, not the perf bias value + +Signed-off-by: Thomas Renninger + +diff --git a/utils/cpupower-info.c b/utils/cpupower-info.c +index 3f68632..3e27975 100644 +--- a/utils/cpupower-info.c ++++ b/utils/cpupower-info.c +@@ -125,11 +125,11 @@ int cmd_info(int argc, char **argv) + if (params.perf_bias) { + ret = msr_intel_get_perf_bias(cpu); + if (ret < 0) { +- printf(_("Could not read perf-bias value\n")); +- break; ++ printf(_("Could not read perf-bias value[%d]\n"), ret); ++ exit(EXIT_FAILURE); + } else + printf(_("perf-bias: %d\n"), ret); + } + } +- return ret; ++ return 0; + } diff --git a/cpupower.changes b/cpupower.changes index fdaa6bf..2b2077f 100644 --- a/cpupower.changes +++ b/cpupower.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Tue Apr 1 12:31:14 UTC 2014 - trenn@suse.de + +- Do return 0 if cpupower info -b is called instead of the perf bias value + which is already printed to stdout. + Add cpupower-return_zero_on_success.patch +- Remove mc and smt scheduler knobs. These do not exist anymore in latest + kernels for quite a while now. + Add cpupower-remove_mc_scheduler_bits.patch + ------------------------------------------------------------------- Mon Mar 31 15:27:14 UTC 2014 - trenn@suse.de diff --git a/cpupower.spec b/cpupower.spec index 1fead51..def2a71 100644 --- a/cpupower.spec +++ b/cpupower.spec @@ -34,6 +34,8 @@ Source2: cpupower_export_tarball_from_git.sh Patch1: cpupower_disable_by_latency.patch Patch2: add_idle_manpages_in_Makefile.patch Patch3: cpupower-always_try_to_load_msr_driver_as_root.patch +Patch4: cpupower-return_zero_on_success.patch +Patch5: cpupower-remove_mc_scheduler_bits.patch Patch20: turbostat_fix_man_perm.patch Patch21: make_header_file_passable_from_outside.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -83,6 +85,8 @@ powersave module. %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch5 -p4 cd ../turbostat-%{tsversion} %patch20 -p1 %patch21 -p1