From a1cda96b29abb9a532d3b1a3676a4d00d32d9fdc Mon Sep 17 00:00:00 2001 From: Juan RP Date: Thu, 14 Feb 2013 06:57:10 +0100 Subject: [PATCH] powertop: merge some patches for bugfixes from Fedora. --- .../powertop-2.0-always-create-params.patch | 34 ++++ ...owertop-2.2-fix-crash-on-readonly-fs.patch | 41 +++++ .../patches/powertop-2.2-gpu-wiggle-fix.patch | 11 ++ .../powertop-2.2-reduce-syscalls.patch | 149 ++++++++++++++++++ .../patches/powertop-2.2-version-fix.patch | 34 ++++ srcpkgs/powertop/template | 2 +- 6 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/powertop/patches/powertop-2.0-always-create-params.patch create mode 100644 srcpkgs/powertop/patches/powertop-2.2-fix-crash-on-readonly-fs.patch create mode 100644 srcpkgs/powertop/patches/powertop-2.2-gpu-wiggle-fix.patch create mode 100644 srcpkgs/powertop/patches/powertop-2.2-reduce-syscalls.patch create mode 100644 srcpkgs/powertop/patches/powertop-2.2-version-fix.patch diff --git a/srcpkgs/powertop/patches/powertop-2.0-always-create-params.patch b/srcpkgs/powertop/patches/powertop-2.0-always-create-params.patch new file mode 100644 index 0000000000..44b8ad3a78 --- /dev/null +++ b/srcpkgs/powertop/patches/powertop-2.0-always-create-params.patch @@ -0,0 +1,34 @@ +--- src/parameters/persistent.cpp.orig 2012-05-04 18:03:54.000000000 +0200 ++++ src/parameters/persistent.cpp 2012-05-16 21:29:24.785390730 +0200 +@@ -129,9 +129,6 @@ void save_parameters(const char *filenam + + // printf("result size is %i, #parameters is %i \n", (int)past_results.size(), (int)all_parameters.parameters.size()); + +- if (!global_power_valid()) +- return; +- + pathname = get_param_directory(filename); + + file.open(pathname, ios::out); +@@ -140,12 +137,15 @@ void save_parameters(const char *filenam + return; + } + +- map::iterator it; +- +- for (it = param_index.begin(); it != param_index.end(); it++) { +- int index; +- index = it->second; +- file << it->first << "\t" << setprecision(9) << all_parameters.parameters[index] << "\n"; ++ if (global_power_valid()) ++ { ++ map::iterator it; ++ ++ for (it = param_index.begin(); it != param_index.end(); it++) { ++ int index; ++ index = it->second; ++ file << it->first << "\t" << setprecision(9) << all_parameters.parameters[index] << "\n"; ++ } + } + file.close(); + } diff --git a/srcpkgs/powertop/patches/powertop-2.2-fix-crash-on-readonly-fs.patch b/srcpkgs/powertop/patches/powertop-2.2-fix-crash-on-readonly-fs.patch new file mode 100644 index 0000000000..573ceb321c --- /dev/null +++ b/srcpkgs/powertop/patches/powertop-2.2-fix-crash-on-readonly-fs.patch @@ -0,0 +1,41 @@ +From bd72b4433fec358801afebf3f02ab899b1745c5f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= +Date: Wed, 28 Nov 2012 16:31:38 +0100 +Subject: [PATCH] report: fixed crash when writing report to RO filesystem +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Jaroslav Škarvada +--- + src/report/report.cpp | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/report/report.cpp b/src/report/report.cpp +index 51bc6a7..c018bb1 100644 +--- src/report/report.cpp ++++ src/report/report.cpp +@@ -183,13 +183,16 @@ void init_report_output(char *filename_str, int iterations) + + void finish_report_output(void) + { +- fprintf(stderr, _("PowerTOP outputing using base filename %s\n"), reportout.filename); + if (reporttype == REPORT_OFF) + return; + + report.finish_report(); +- fputs(report.get_result(), reportout.report_file); +- fdatasync(fileno(reportout.report_file)); +- fclose(reportout.report_file); ++ if (reportout.report_file) ++ { ++ fprintf(stderr, _("PowerTOP outputing using base filename %s\n"), reportout.filename); ++ fputs(report.get_result(), reportout.report_file); ++ fdatasync(fileno(reportout.report_file)); ++ fclose(reportout.report_file); ++ } + report.clear_result(); + } +-- +1.7.11.7 + diff --git a/srcpkgs/powertop/patches/powertop-2.2-gpu-wiggle-fix.patch b/srcpkgs/powertop/patches/powertop-2.2-gpu-wiggle-fix.patch new file mode 100644 index 0000000000..6c549a88a6 --- /dev/null +++ b/srcpkgs/powertop/patches/powertop-2.2-gpu-wiggle-fix.patch @@ -0,0 +1,11 @@ +diff --git a/src/cpu/intel_cpus.h b/src/cpu/intel_cpus.h +index 1949af1..752e8d0 100644 +--- src/cpu/intel_cpus.h ++++ src/cpu/intel_cpus.h +@@ -158,5 +158,6 @@ public: + virtual char * fill_cstate_line(int line_nr, char *buffer, const char *separator); + virtual int has_pstate_level(int level) { return 0; }; + virtual int has_pstates(void) { return 0; }; ++ virtual void wiggle(void) { }; + + }; diff --git a/srcpkgs/powertop/patches/powertop-2.2-reduce-syscalls.patch b/srcpkgs/powertop/patches/powertop-2.2-reduce-syscalls.patch new file mode 100644 index 0000000000..ffe9c15156 --- /dev/null +++ b/srcpkgs/powertop/patches/powertop-2.2-reduce-syscalls.patch @@ -0,0 +1,149 @@ +From 63b20549280e606e5e73d5c9fe701c79a5abc6cf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= +Date: Wed, 12 Dec 2012 16:19:56 +0100 +Subject: [PATCH] Reduced number of useless 'open' syscalls +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There are called many useless 'open' syscalls that always fail, like: + open("/sys/devices/system/cpu/uevent/cpufreq/scaling_governor", O_RDONLY) = -1 ENOTDIR (Not a directory) +This patch filters them to 'likely' patterns, like e.g.: +/sys/devices/system/cpu/cpuX/cpufreq/scaling_governor, where X is string +starting with digit. For match cases it will add only small overhead. + +Originally reported as: +https://bugzilla.redhat.com/show_bug.cgi?id=886185 + +Signed-off-by: Jaroslav Škarvada +--- + src/devices/alsa.cpp | 2 +- + src/devices/backlight.cpp | 2 ++ + src/devlist.cpp | 3 ++- + src/tuning/cpufreq.cpp | 11 ++++++----- + src/tuning/tuningsysfs.cpp | 5 +---- + 5 files changed, 12 insertions(+), 11 deletions(-) + +diff --git a/src/devices/alsa.cpp b/src/devices/alsa.cpp +index 4f5d3f9..33a52f5 100644 +--- src/devices/alsa.cpp ++++ src/devices/alsa.cpp +@@ -167,7 +167,7 @@ void create_all_alsa(void) + entry = readdir(dir); + if (!entry) + break; +- if (entry->d_name[0] == '.') ++ if (strncmp(entry->d_name, "hwC", 3) != 0) + continue; + sprintf(filename, "/sys/class/sound/card0/%s/power_on_acct", entry->d_name); + +diff --git a/src/devices/backlight.cpp b/src/devices/backlight.cpp +index b8c9147..03aa5bc 100644 +--- src/devices/backlight.cpp ++++ src/devices/backlight.cpp +@@ -90,6 +90,8 @@ static int dpms_screen_on(void) + if (!entry) + break; + ++ if (strncmp(entry->d_name, "card", 4) != 0) ++ continue; + sprintf(filename, "/sys/class/drm/card0/%s/enabled", entry->d_name); + file.open(filename, ios::in); + if (!file) +diff --git a/src/devlist.cpp b/src/devlist.cpp +index de5abff..633a568 100644 +--- src/devlist.cpp ++++ src/devlist.cpp +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + using namespace std; + +@@ -117,7 +118,7 @@ void collect_open_devices(void) + entry2 = readdir(dir2); + if (!entry2) + break; +- if (entry2->d_name[0] == '.') ++ if (!isdigit(entry2->d_name[0])) + continue; + sprintf(filename, "/proc/%s/fd/%s", entry->d_name, entry2->d_name); + memset(link, 0, 4096); +diff --git a/src/tuning/cpufreq.cpp b/src/tuning/cpufreq.cpp +index df245ad..e870559 100644 +--- src/tuning/cpufreq.cpp ++++ src/tuning/cpufreq.cpp +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + + #include "../lib.h" + #include "cpufreq.h" +@@ -72,7 +73,7 @@ int cpufreq_tunable::good_bad(void) + return ret; + + while ((dirent = readdir(dir))) { +- if (dirent->d_name[0]=='.') ++ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3])) + continue; + sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name); + file = fopen(filename, "r"); +@@ -123,7 +124,7 @@ void cpufreq_tunable::toggle(void) + return; + + while ((dirent = readdir(dir))) { +- if (dirent->d_name[0]=='.') ++ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3])) + continue; + sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name); + file = fopen(filename, "w"); +@@ -141,7 +142,7 @@ void cpufreq_tunable::toggle(void) + return; + + while ((dirent = readdir(dir))) { +- if (dirent->d_name[0]=='.') ++ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3])) + continue; + sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name); + file = fopen(filename, "w"); +@@ -171,7 +172,7 @@ const char *cpufreq_tunable::toggle_script(void) { + return NULL; + + while ((dirent = readdir(dir))) { +- if (dirent->d_name[0]=='.') ++ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3])) + continue; + sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name); + if (stat(filename, &statbuf) == -1) +@@ -189,7 +190,7 @@ const char *cpufreq_tunable::toggle_script(void) { + return NULL; + + while ((dirent = readdir(dir))) { +- if (dirent->d_name[0]=='.') ++ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3])) + continue; + sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name); + if (stat(filename, &statbuf) == -1) +diff --git a/src/tuning/tuningsysfs.cpp b/src/tuning/tuningsysfs.cpp +index 33d3786..ec1ca6b 100644 +--- src/tuning/tuningsysfs.cpp ++++ src/tuning/tuningsysfs.cpp +@@ -131,10 +131,7 @@ void add_sata_tunables(void) + if (!entry) + break; + +- if (strcmp(entry->d_name, ".") == 0) +- continue; +- +- if (strcmp(entry->d_name, "..") == 0) ++ if (entry->d_name[0] == '.') + continue; + + sprintf(filename, "/sys/class/scsi_host/%s/link_power_management_policy", entry->d_name); +-- +1.7.11.7 + diff --git a/srcpkgs/powertop/patches/powertop-2.2-version-fix.patch b/srcpkgs/powertop/patches/powertop-2.2-version-fix.patch new file mode 100644 index 0000000000..1021d085d3 --- /dev/null +++ b/srcpkgs/powertop/patches/powertop-2.2-version-fix.patch @@ -0,0 +1,34 @@ +From: Namhyung Kim +To: powertop@lists.01.org +Date: Sun, 18 Nov 2012 00:42:47 +0900 +Message-Id: <1353166967-24095-1-git-send-email-namhyung@gmail.com> +Subject: [Powertop] [PATCH] Use PACKAGE_VERSION for POWERTOP_VERSION + +It was missed to update POWERTOP_VERSION macro so that the +new v2.2 release still shows v2.1 string on the header of +ncurses window. Convert to use PACKAGE_VERSION macro which +set by autotools to the AC_INIT version so that it cannot +be missed anymore. + +Signed-off-by: Namhyung Kim +--- + src/lib.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/lib.h b/src/lib.h +index 8cf4632..209421a 100644 +--- src/lib.h ++++ src/lib.h +@@ -35,8 +35,8 @@ + + #define _(STRING) gettext(STRING) + +-#define POWERTOP_VERSION "v2.1" +-#define POWERTOP_SHORT_VERSION "2.1" ++#define POWERTOP_VERSION "v"PACKAGE_VERSION ++#define POWERTOP_SHORT_VERSION PACKAGE_VERSION + + + extern int get_max_cpu(void); +-- +1.7.9.2 diff --git a/srcpkgs/powertop/template b/srcpkgs/powertop/template index 23eb77ac91..3d4c72343c 100644 --- a/srcpkgs/powertop/template +++ b/srcpkgs/powertop/template @@ -1,7 +1,7 @@ # Template file for 'powertop' pkgname=powertop version=2.2 -revision=1 +revision=2 build_style=gnu-configure makedepends="pkg-config ncurses-devel pciutils-devel libnl3-devel" short_desc="Linux tool to find out what is using power on computer"