it was pointed out to me that CONFIG_PERF_COUNTERS has been superseded by PERF_EVENTS
since 2.6.32 - see bottom section of
http://cateee.net/lkddb/web-lkddb/PERF_COUNTERS.html
so is CONFIG_PERF_COUNTERS really required?
________________________________
From: Rui DaCosta <ruidc(a)yahoo.com>
To: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
Cc: Arjan van de Ven <arjan(a)linux.intel.com>; Chris Ferron
<chris.e.ferron(a)linux.intel.com>; "powertop(a)lists.01.org"
<powertop(a)lists.01.org>
Sent: Sunday, 20 May 2012, 13:01
Subject: Re: [Powertop] segfault on Sheevaplug (ARM Kirkwood)
Thanks,
this has gotten past the issue. I now get:
PowerTOP v2.0 needs the kernel to support the 'perf' subsystem
as well as support for trace points in the kernel:
CONFIG_PERF_EVENTS=y
CONFIG_PERF_COUNTERS=y
CONFIG_TRACEPOINTS=y
CONFIG_TRACING=y
all these except CONFIG_PERF_COUNTERS are already set, so i'll need to see if i can
get a kernel built with that option on.
Will this patch make it into trunk?
Many thanks.
________________________________
From: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
To: Rui DaCosta <ruidc(a)yahoo.com>
Cc: Arjan van de Ven <arjan(a)linux.intel.com>; Chris Ferron
<chris.e.ferron(a)linux.intel.com>; powertop(a)lists.01.org
Sent: Sunday, 20 May 2012, 11:34
Subject: Re: [Powertop] segfault on Sheevaplug (ARM Kirkwood)
On (05/20/12 02:19), Rui DaCosta wrote:
Sure and thanks,
(v1.13 worked fine btw)
Processor : Feroceon 88FR131 rev 1 (v5l)
BogoMIPS : 1191.11
Features : swp half thumb
fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant : 0x2
CPU part : 0x131
CPU revision : 1
Hardware : Marvell SheevaPlug Reference Board
Revision : 0000
Serial : 0000000000000000
Thanks,
Well, that's the problem. Current cpu info parser doesn't understand your
cpuinfo format. It awaits for sane values on special places. For example, word
"processor" should be followed by a number, not model name.
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 37
bogomips : 4522.66
while cpuinfo on your system is totally different.
the following is untested patch (I'm a bit skeptical) plus I don't have
ARM device for testing.
---
src/cpu/cpu.cpp | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
index 09d4a2d..143e18c 100644
--- a/src/cpu/cpu.cpp
+++ b/src/cpu/cpu.cpp
@@ -225,7 +225,7 @@ void enumerate_cpus(void)
ifstream file;
char line[1024];
- int number = -1;
+ int number = 1;
char vendor[128];
int family = 0;
int model = 0;
@@ -236,7 +236,6 @@ void enumerate_cpus(void)
return;
while (file) {
-
file.getline(line, sizeof(line));
if (strncmp(line, "vendor_id\t",10) == 0) {
char *c;
@@ -247,42 +246,45 @@ void enumerate_cpus(void)
c++;
strncpy(vendor,c, 127);
}
- }
- if (strncmp(line, "processor\t",10) == 0) {
+ } else if (strncmp(line, "processor\t",10) == 0) {
char *c;
c = strchr(line, ':');
if (c) {
c++;
number = strtoull(c, NULL, 10);
}
- }
- if (strncmp(line, "cpu family\t",11) == 0) {
+ } else if (strncmp(line, "Processor\t",10) == 0) {
+ char *c;
+ c = strchr(line, ':');
+ if (c) {
+ c++;
+ if (*c == ' ')
+
c++;
+ strncpy(vendor, c, 127);
+ }
+ } else if (strncmp(line, "cpu family\t",11) == 0) {
char *c;
c = strchr(line, ':');
if (c) {
c++;
family = strtoull(c, NULL, 10);
}
- }
- if (strncmp(line, "model\t",6) == 0) {
+
} else if (strncmp(line, "model\t",6) == 0) {
char *c;
c = strchr(line, ':');
if (c) {
c++;
model = strtoull(c, NULL, 10);
}
- }
- if (strncasecmp(line, "bogomips\t", 9) == 0) {
+ } else if (strncasecmp(line, "bogomips\t", 9) == 0) {
handle_one_cpu(number, vendor, family, model);
set_max_cpu(number);
}
}
-
file.close();
perf_events = new perf_power_bundle();
-
if (!perf_events->add_event("power:cpu_idle")){
perf_events->add_event("power:power_start");
perf_events->add_event("power:power_end");