All of lore.kernel.org
 help / color / mirror / Atom feed
* [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop doesn't show correct frequency stats
@ 2013-10-07  9:26 Shaojie Sun
  0 siblings, 0 replies; 7+ messages in thread
From: Shaojie Sun @ 2013-10-07  9:26 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 1385 bytes --]

From: Jon Medhurst <tixy(a)linaro.org>

For cpu_frequency events, perf_power_bundle::handle_trace_point()
is always being called with the same cpunr. so the parameter of
cpunr is not equal to the cpu which cpu_frequency events happened.
Lucky the trace event themselves have a cpu_id field to say to which
CPU event it relates, we should use this cpu_id field.

Signed-off-by:  Jon Medhurst <tixy(a)linaro.org>
		Shaojie Sun <shaojie.sun(a)linaro.com>
---
 src/cpu/cpu.cpp |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
index 7f3af69..e304bbe 100644
--- a/src/cpu/cpu.cpp
+++ b/src/cpu/cpu.cpp
@@ -781,10 +781,15 @@ void perf_power_bundle::handle_trace_point(void *trace, int cpunr, uint64_t time
 
 	if (strcmp(event->name, "power_frequency") == 0
 	|| strcmp(event->name, "cpu_frequency") == 0){
-
+		ret = pevent_get_field_val(NULL, event, "cpu_id", &rec, &val, 0);
+		if (ret < 0) {
+			fprintf(stderr, _("power or cpu_frequency event returned no cpu?\n"));
+			exit(-1);
+		}
+		cpu = all_cpus[val];
 		ret = pevent_get_field_val(NULL, event, "state", &rec, &val, 0);
 		if (ret < 0) {
-			fprintf(stderr, _("power or cpu_frequecny event returned no state?\n"));
+			fprintf(stderr, _("power or cpu_frequency event returned no state?\n"));
 			exit(-1);
 		}
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop doesn't show correct frequency stats
@ 2013-10-08  8:58 Shaojie Sun
  0 siblings, 0 replies; 7+ messages in thread
From: Shaojie Sun @ 2013-10-08  8:58 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 636 bytes --]

Thanks.

On Tue, Oct 8, 2013 at 4:54 PM, Sergey Senozhatsky
<sergey.senozhatsky(a)gmail.com> wrote:
> Hello,
>
> On (10/08/13 16:45), Shaojie Sun wrote:
>> Hi Sergey
>>
>> I tested in powertop tool and find that there is no cpu_id filed in
>> some perf events. such as sched_switch, hrtimer_expire_exit and so on.
>> so we can't modify this change in src/perf/perf_bundle (perf_sample's
>> perf_event_header).
>>
>> And we didn't find any bugs on other perf events. So we only modified
>> it in src/cpu/cpu.cpp.
>>
>
> thanks. I'll try to find some time today (or tomorrow) to take a look
> on it.
>
>         -ss

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop doesn't show correct frequency stats
@ 2013-10-08  8:54 Sergey Senozhatsky
  0 siblings, 0 replies; 7+ messages in thread
From: Sergey Senozhatsky @ 2013-10-08  8:54 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 41227 bytes --]

Hello,

On (10/08/13 16:45), Shaojie Sun wrote:
> Hi Sergey
> 
> I tested in powertop tool and find that there is no cpu_id filed in
> some perf events. such as sched_switch, hrtimer_expire_exit and so on.
> so we can't modify this change in src/perf/perf_bundle (perf_sample's
> perf_event_header).
> 
> And we didn't find any bugs on other perf events. So we only modified
> it in src/cpu/cpu.cpp.
> 

thanks. I'll try to find some time today (or tomorrow) to take a look
on it.

	-ss

> On Tue, Oct 8, 2013 at 4:17 PM, Jon Medhurst (Tixy) <tixy(a)linaro.org> wrote:
> > On Mon, 2013-10-07 at 22:54 +0800, Shaojie Sun wrote:
> >> add jon.medhurst(a)linaro.org
> >>
> >> On Mon, Oct 7, 2013 at 7:40 PM, Sergey Senozhatsky
> >> <sergey.senozhatsky(a)gmail.com> wrote:
> >> > On (10/07/13 19:31), Shaojie Sun wrote:
> >> >> Date: Mon, 7 Oct 2013 19:31:54 +0800
> >> >> From: Shaojie Sun <shaojie.sun(a)linaro.org>
> >> >> To: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
> >> >> Cc: Sanjay Rawat <sanjay.rawat(a)linaro.org>, Jon Medhurst <tixy(a)linaro.org>,
> >> >>  SunShaoJie <sunshaojie(a)huawei.com>, "Private-PMWG(a)Linaro"
> >> >>  <private-pmwg(a)linaro.org>
> >> >> Subject: Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop
> >> >>  doesn't show correct frequency stats
> >> >>
> >> >> Goog question.
> >> >> Could Tixy answer it?
> >> >
> >> > /** Removed Private-PMWG (no permissions), Cc'd powertop list. */
> >> >
> >> >
> >> >
> >> > the thing is that we tend to trust passed cpunr in many handle_trace_point()-s.
> >> > so it would be better to fix all sample->trace.cpu users, because the
> >> > problme may be a bit bigger than that (e.g. src/process/do_process.cpp
> >> > perf_process_bundle::handle_trace_point()).
> >
> > That's what I thought too and said so when I commented on the Linaro's
> > bug tracking system [1]. I was hoping that someone more familiar with
> > powertop would investigate further as I had never looked at powertop or
> > any perf related code before.
> >
> > [1] https://bugs.launchpad.net/linaro-android/+bug/1042755/comments/14
> >
> > --
> > Tixy
> >
> >> >
> >> >         -ss
> >> >
> >> >> On Mon, Oct 7, 2013 at 6:03 PM, Sergey Senozhatsky
> >> >> <sergey.senozhatsky(a)gmail.com> wrote:
> >> >> > On (10/07/13 17:26), Shaojie Sun wrote:
> >> >> >> From: Jon Medhurst <tixy(a)linaro.org>
> >> >> >>
> >> >> >> For cpu_frequency events, perf_power_bundle::handle_trace_point()
> >> >> >> is always being called with the same cpunr. so the parameter of
> >> >> >> cpunr is not equal to the cpu which cpu_frequency events happened.
> >> >> >> Lucky the trace event themselves have a cpu_id field to say to which
> >> >> >> CPU event it relates, we should use this cpu_id field.
> >> >> >>
> >> >> >> Signed-off-by:  Jon Medhurst <tixy(a)linaro.org>
> >> >> >>               Shaojie Sun <shaojie.sun(a)linaro.com>
> >> >> >> ---
> >> >> >>  src/cpu/cpu.cpp |    9 +++++++--
> >> >> >>  1 file changed, 7 insertions(+), 2 deletions(-)
> >> >> >>
> >> >> >> diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
> >> >> >> index 7f3af69..e304bbe 100644
> >> >> >> --- a/src/cpu/cpu.cpp
> >> >> >> +++ b/src/cpu/cpu.cpp
> >> >> >> @@ -781,10 +781,15 @@ void perf_power_bundle::handle_trace_point(void *trace, int cpunr, uint64_t time
> >> >> >>
> >> >> >>       if (strcmp(event->name, "power_frequency") == 0
> >> >> >>       || strcmp(event->name, "cpu_frequency") == 0){
> >> >> >> -
> >> >> >> +             ret = pevent_get_field_val(NULL, event, "cpu_id", &rec, &val, 0);
> >> >> >> +             if (ret < 0) {
> >> >> >> +                     fprintf(stderr, _("power or cpu_frequency event returned no cpu?\n"));
> >> >> >> +                     exit(-1);
> >> >> >> +             }
> >> >> >> +             cpu = all_cpus[val];
> >> >> >>               ret = pevent_get_field_val(NULL, event, "state", &rec, &val, 0);
> >> >> >>               if (ret < 0) {
> >> >> >> -                     fprintf(stderr, _("power or cpu_frequecny event returned no state?\n"));
> >> >> >> +                     fprintf(stderr, _("power or cpu_frequency event returned no state?\n"));
> >> >> >>                       exit(-1);
> >> >> >>               }
> >> >> >
> >> >> > Hello,
> >> >> > why not fixing it in src/perf/perf_bundle (perf_sample's perf_event_header),
> >> >> > where we create data for handle_trace_point() ?
> >> >> >
> >> >> >         -ss
> >> >> >
> >> >> >> --
> >> >> >> 1.7.9.5
> >> >> >>
> >> >> >> _______________________________________________
> >> >> >> PowerTop mailing list
> >> >> >> PowerTop(a)lists.01.org
> >> >> >> https://lists.01.org/mailman/listinfo/powertop
> >> >> >>
> >> >>
> >
> >

> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 175798456, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 27164, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 27164, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 17, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 17, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 17, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 3, cpu 6, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 2, cpu 1, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 0, cpu 1, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 0, cpu 1, event name softirq_exit.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 3, cpu 1, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 2, cpu 9, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 1, cpu 9, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 0, cpu 9, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 0, cpu 9, event name softirq_exit.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 9, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 27164, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 17, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 27164, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 17, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 27164, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 17, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 27164, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 1, cpu 6, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu -1, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 13, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 27164, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu -1, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu -1, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu -1, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu -1, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu -1, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu 27164, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu -1, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 0, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 0, cpu 8, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 3, cpu -1, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 17, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 0, cpu 27164, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu -1, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu 0, event name sched_wakeup.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu -1, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 1, cpu 6, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu 8, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 3, cpu 13, event name sched_switch.
> perf find a event not support cpu_id, event name is hrtimer_expire_entry.
> perf cpnnr 0, cpu 1, event name hrtimer_expire_entry.
> perf find a event not support cpu_id, event name is hrtimer_expire_entry.
> perf cpnnr 2, cpu 773908736, event name hrtimer_expire_entry.
> perf find a event not support cpu_id, event name is hrtimer_expire_entry.
> perf cpnnr 3, cpu 774957312, event name hrtimer_expire_entry.
> perf find a event not support cpu_id, event name is hrtimer_expire_entry.
> perf cpnnr 1, cpu 775481600, event name hrtimer_expire_entry.
> perf find a event not support cpu_id, event name is hrtimer_expire_exit.
> perf cpnnr 3, cpu 774433024, event name hrtimer_expire_exit.
> perf find a event not support cpu_id, event name is hrtimer_expire_exit.
> perf cpnnr 2, cpu 775481600, event name hrtimer_expire_exit.
> perf find a event not support cpu_id, event name is hrtimer_expire_exit.
> perf cpnnr 0, cpu 774957312, event name hrtimer_expire_exit.
> perf find a event not support cpu_id, event name is hrtimer_expire_exit.
> perf cpnnr 1, cpu 773908736, event name hrtimer_expire_exit.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 0, cpu 774433024, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 2, cpu 1, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 3, cpu 1, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 0, cpu 1, event name softirq_exit.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 2, cpu 1, event name softirq_exit.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 3, cpu 1, event name softirq_exit.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 2, cpu 9, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 0, cpu 9, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_entry.
> perf cpnnr 3, cpu 9, event name softirq_entry.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 2, cpu 9, event name softirq_exit.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 0, cpu 9, event name softirq_exit.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 1, cpu 9, event name softirq_exit.
> perf find a event not support cpu_id, event name is softirq_exit.
> perf cpnnr 3, cpu 9, event name softirq_exit.
> perf find a event not support cpu_id, event name is sched_switch.
> perf find a event not support cpu_id, event name is hrtimer_expire_entry.
> perf find a event not support cpu_id, event name is sched_wakeup.
> perf cpnnr 2, cpu -1898111448, event name sched_wakeup.
> perf find a event not support cpu_id, event name is hrtimer_expire_exit.
> perf cpnnr 2, cpu 17533, event name hrtimer_expire_exit.
> perf find a event not support cpu_id, event name is sched_switch.
> perf cpnnr 2, cpu -1, event name sched_switch.
> perf find a event not support cpu_id, event name is sched_wakeup.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop doesn't show correct frequency stats
@ 2013-10-08  8:45 Shaojie Sun
  0 siblings, 0 replies; 7+ messages in thread
From: Shaojie Sun @ 2013-10-08  8:45 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 4440 bytes --]

Hi Sergey

I tested in powertop tool and find that there is no cpu_id filed in
some perf events. such as sched_switch, hrtimer_expire_exit and so on.
so we can't modify this change in src/perf/perf_bundle (perf_sample's
perf_event_header).

And we didn't find any bugs on other perf events. So we only modified
it in src/cpu/cpu.cpp.

On Tue, Oct 8, 2013 at 4:17 PM, Jon Medhurst (Tixy) <tixy(a)linaro.org> wrote:
> On Mon, 2013-10-07 at 22:54 +0800, Shaojie Sun wrote:
>> add jon.medhurst(a)linaro.org
>>
>> On Mon, Oct 7, 2013 at 7:40 PM, Sergey Senozhatsky
>> <sergey.senozhatsky(a)gmail.com> wrote:
>> > On (10/07/13 19:31), Shaojie Sun wrote:
>> >> Date: Mon, 7 Oct 2013 19:31:54 +0800
>> >> From: Shaojie Sun <shaojie.sun(a)linaro.org>
>> >> To: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
>> >> Cc: Sanjay Rawat <sanjay.rawat(a)linaro.org>, Jon Medhurst <tixy(a)linaro.org>,
>> >>  SunShaoJie <sunshaojie(a)huawei.com>, "Private-PMWG(a)Linaro"
>> >>  <private-pmwg(a)linaro.org>
>> >> Subject: Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop
>> >>  doesn't show correct frequency stats
>> >>
>> >> Goog question.
>> >> Could Tixy answer it?
>> >
>> > /** Removed Private-PMWG (no permissions), Cc'd powertop list. */
>> >
>> >
>> >
>> > the thing is that we tend to trust passed cpunr in many handle_trace_point()-s.
>> > so it would be better to fix all sample->trace.cpu users, because the
>> > problme may be a bit bigger than that (e.g. src/process/do_process.cpp
>> > perf_process_bundle::handle_trace_point()).
>
> That's what I thought too and said so when I commented on the Linaro's
> bug tracking system [1]. I was hoping that someone more familiar with
> powertop would investigate further as I had never looked at powertop or
> any perf related code before.
>
> [1] https://bugs.launchpad.net/linaro-android/+bug/1042755/comments/14
>
> --
> Tixy
>
>> >
>> >         -ss
>> >
>> >> On Mon, Oct 7, 2013 at 6:03 PM, Sergey Senozhatsky
>> >> <sergey.senozhatsky(a)gmail.com> wrote:
>> >> > On (10/07/13 17:26), Shaojie Sun wrote:
>> >> >> From: Jon Medhurst <tixy(a)linaro.org>
>> >> >>
>> >> >> For cpu_frequency events, perf_power_bundle::handle_trace_point()
>> >> >> is always being called with the same cpunr. so the parameter of
>> >> >> cpunr is not equal to the cpu which cpu_frequency events happened.
>> >> >> Lucky the trace event themselves have a cpu_id field to say to which
>> >> >> CPU event it relates, we should use this cpu_id field.
>> >> >>
>> >> >> Signed-off-by:  Jon Medhurst <tixy(a)linaro.org>
>> >> >>               Shaojie Sun <shaojie.sun(a)linaro.com>
>> >> >> ---
>> >> >>  src/cpu/cpu.cpp |    9 +++++++--
>> >> >>  1 file changed, 7 insertions(+), 2 deletions(-)
>> >> >>
>> >> >> diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
>> >> >> index 7f3af69..e304bbe 100644
>> >> >> --- a/src/cpu/cpu.cpp
>> >> >> +++ b/src/cpu/cpu.cpp
>> >> >> @@ -781,10 +781,15 @@ void perf_power_bundle::handle_trace_point(void *trace, int cpunr, uint64_t time
>> >> >>
>> >> >>       if (strcmp(event->name, "power_frequency") == 0
>> >> >>       || strcmp(event->name, "cpu_frequency") == 0){
>> >> >> -
>> >> >> +             ret = pevent_get_field_val(NULL, event, "cpu_id", &rec, &val, 0);
>> >> >> +             if (ret < 0) {
>> >> >> +                     fprintf(stderr, _("power or cpu_frequency event returned no cpu?\n"));
>> >> >> +                     exit(-1);
>> >> >> +             }
>> >> >> +             cpu = all_cpus[val];
>> >> >>               ret = pevent_get_field_val(NULL, event, "state", &rec, &val, 0);
>> >> >>               if (ret < 0) {
>> >> >> -                     fprintf(stderr, _("power or cpu_frequecny event returned no state?\n"));
>> >> >> +                     fprintf(stderr, _("power or cpu_frequency event returned no state?\n"));
>> >> >>                       exit(-1);
>> >> >>               }
>> >> >
>> >> > Hello,
>> >> > why not fixing it in src/perf/perf_bundle (perf_sample's perf_event_header),
>> >> > where we create data for handle_trace_point() ?
>> >> >
>> >> >         -ss
>> >> >
>> >> >> --
>> >> >> 1.7.9.5
>> >> >>
>> >> >> _______________________________________________
>> >> >> PowerTop mailing list
>> >> >> PowerTop(a)lists.01.org
>> >> >> https://lists.01.org/mailman/listinfo/powertop
>> >> >>
>> >>
>
>

[-- Attachment #2: powertop_log.txt --]
[-- Type: text/plain, Size: 34606 bytes --]

perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 175798456, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 27164, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 27164, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 17, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 17, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 17, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 3, cpu 6, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 2, cpu 1, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 0, cpu 1, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 0, cpu 1, event name softirq_exit.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 3, cpu 1, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 2, cpu 9, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 1, cpu 9, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 0, cpu 9, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 0, cpu 9, event name softirq_exit.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 9, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 27164, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 17, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 27164, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 17, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 27164, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 17, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 27164, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 1, cpu 6, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu -1, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 13, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 27164, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu -1, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu -1, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu -1, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu -1, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu -1, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu 27164, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu -1, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 0, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 0, cpu 8, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 3, cpu -1, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 17, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 0, cpu 27164, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu -1, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu 0, event name sched_wakeup.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu -1, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 1, cpu 6, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu 8, event name sched_switch.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 3, cpu 13, event name sched_switch.
perf find a event not support cpu_id, event name is hrtimer_expire_entry.
perf cpnnr 0, cpu 1, event name hrtimer_expire_entry.
perf find a event not support cpu_id, event name is hrtimer_expire_entry.
perf cpnnr 2, cpu 773908736, event name hrtimer_expire_entry.
perf find a event not support cpu_id, event name is hrtimer_expire_entry.
perf cpnnr 3, cpu 774957312, event name hrtimer_expire_entry.
perf find a event not support cpu_id, event name is hrtimer_expire_entry.
perf cpnnr 1, cpu 775481600, event name hrtimer_expire_entry.
perf find a event not support cpu_id, event name is hrtimer_expire_exit.
perf cpnnr 3, cpu 774433024, event name hrtimer_expire_exit.
perf find a event not support cpu_id, event name is hrtimer_expire_exit.
perf cpnnr 2, cpu 775481600, event name hrtimer_expire_exit.
perf find a event not support cpu_id, event name is hrtimer_expire_exit.
perf cpnnr 0, cpu 774957312, event name hrtimer_expire_exit.
perf find a event not support cpu_id, event name is hrtimer_expire_exit.
perf cpnnr 1, cpu 773908736, event name hrtimer_expire_exit.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 0, cpu 774433024, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 2, cpu 1, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 3, cpu 1, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 0, cpu 1, event name softirq_exit.
perf find a event not support cpu_id, event name is softirq_exit.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 2, cpu 1, event name softirq_exit.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 3, cpu 1, event name softirq_exit.
perf find a event not support cpu_id, event name is softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 2, cpu 9, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 0, cpu 9, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_entry.
perf cpnnr 3, cpu 9, event name softirq_entry.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 2, cpu 9, event name softirq_exit.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 0, cpu 9, event name softirq_exit.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 1, cpu 9, event name softirq_exit.
perf find a event not support cpu_id, event name is softirq_exit.
perf cpnnr 3, cpu 9, event name softirq_exit.
perf find a event not support cpu_id, event name is sched_switch.
perf find a event not support cpu_id, event name is hrtimer_expire_entry.
perf find a event not support cpu_id, event name is sched_wakeup.
perf cpnnr 2, cpu -1898111448, event name sched_wakeup.
perf find a event not support cpu_id, event name is hrtimer_expire_exit.
perf cpnnr 2, cpu 17533, event name hrtimer_expire_exit.
perf find a event not support cpu_id, event name is sched_switch.
perf cpnnr 2, cpu -1, event name sched_switch.
perf find a event not support cpu_id, event name is sched_wakeup.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop doesn't show correct frequency stats
@ 2013-10-07 14:54 Shaojie Sun
  0 siblings, 0 replies; 7+ messages in thread
From: Shaojie Sun @ 2013-10-07 14:54 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 3355 bytes --]

add jon.medhurst(a)linaro.org

On Mon, Oct 7, 2013 at 7:40 PM, Sergey Senozhatsky
<sergey.senozhatsky(a)gmail.com> wrote:
> On (10/07/13 19:31), Shaojie Sun wrote:
>> Date: Mon, 7 Oct 2013 19:31:54 +0800
>> From: Shaojie Sun <shaojie.sun(a)linaro.org>
>> To: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
>> Cc: Sanjay Rawat <sanjay.rawat(a)linaro.org>, Jon Medhurst <tixy(a)linaro.org>,
>>  SunShaoJie <sunshaojie(a)huawei.com>, "Private-PMWG(a)Linaro"
>>  <private-pmwg(a)linaro.org>
>> Subject: Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop
>>  doesn't show correct frequency stats
>>
>> Goog question.
>> Could Tixy answer it?
>
> /** Removed Private-PMWG (no permissions), Cc'd powertop list. */
>
>
>
> the thing is that we tend to trust passed cpunr in many handle_trace_point()-s.
> so it would be better to fix all sample->trace.cpu users, because the
> problme may be a bit bigger than that (e.g. src/process/do_process.cpp
> perf_process_bundle::handle_trace_point()).
>
>
>         -ss
>
>> On Mon, Oct 7, 2013 at 6:03 PM, Sergey Senozhatsky
>> <sergey.senozhatsky(a)gmail.com> wrote:
>> > On (10/07/13 17:26), Shaojie Sun wrote:
>> >> From: Jon Medhurst <tixy(a)linaro.org>
>> >>
>> >> For cpu_frequency events, perf_power_bundle::handle_trace_point()
>> >> is always being called with the same cpunr. so the parameter of
>> >> cpunr is not equal to the cpu which cpu_frequency events happened.
>> >> Lucky the trace event themselves have a cpu_id field to say to which
>> >> CPU event it relates, we should use this cpu_id field.
>> >>
>> >> Signed-off-by:  Jon Medhurst <tixy(a)linaro.org>
>> >>               Shaojie Sun <shaojie.sun(a)linaro.com>
>> >> ---
>> >>  src/cpu/cpu.cpp |    9 +++++++--
>> >>  1 file changed, 7 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
>> >> index 7f3af69..e304bbe 100644
>> >> --- a/src/cpu/cpu.cpp
>> >> +++ b/src/cpu/cpu.cpp
>> >> @@ -781,10 +781,15 @@ void perf_power_bundle::handle_trace_point(void *trace, int cpunr, uint64_t time
>> >>
>> >>       if (strcmp(event->name, "power_frequency") == 0
>> >>       || strcmp(event->name, "cpu_frequency") == 0){
>> >> -
>> >> +             ret = pevent_get_field_val(NULL, event, "cpu_id", &rec, &val, 0);
>> >> +             if (ret < 0) {
>> >> +                     fprintf(stderr, _("power or cpu_frequency event returned no cpu?\n"));
>> >> +                     exit(-1);
>> >> +             }
>> >> +             cpu = all_cpus[val];
>> >>               ret = pevent_get_field_val(NULL, event, "state", &rec, &val, 0);
>> >>               if (ret < 0) {
>> >> -                     fprintf(stderr, _("power or cpu_frequecny event returned no state?\n"));
>> >> +                     fprintf(stderr, _("power or cpu_frequency event returned no state?\n"));
>> >>                       exit(-1);
>> >>               }
>> >
>> > Hello,
>> > why not fixing it in src/perf/perf_bundle (perf_sample's perf_event_header),
>> > where we create data for handle_trace_point() ?
>> >
>> >         -ss
>> >
>> >> --
>> >> 1.7.9.5
>> >>
>> >> _______________________________________________
>> >> PowerTop mailing list
>> >> PowerTop(a)lists.01.org
>> >> https://lists.01.org/mailman/listinfo/powertop
>> >>
>>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop doesn't show correct frequency stats
@ 2013-10-07 11:40 Sergey Senozhatsky
  0 siblings, 0 replies; 7+ messages in thread
From: Sergey Senozhatsky @ 2013-10-07 11:40 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 3138 bytes --]

On (10/07/13 19:31), Shaojie Sun wrote:
> Date: Mon, 7 Oct 2013 19:31:54 +0800
> From: Shaojie Sun <shaojie.sun(a)linaro.org>
> To: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
> Cc: Sanjay Rawat <sanjay.rawat(a)linaro.org>, Jon Medhurst <tixy(a)linaro.org>,
>  SunShaoJie <sunshaojie(a)huawei.com>, "Private-PMWG(a)Linaro"
>  <private-pmwg(a)linaro.org>
> Subject: Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop
>  doesn't show correct frequency stats
> 
> Goog question.
> Could Tixy answer it?

/** Removed Private-PMWG (no permissions), Cc'd powertop list. */



the thing is that we tend to trust passed cpunr in many handle_trace_point()-s.
so it would be better to fix all sample->trace.cpu users, because the
problme may be a bit bigger than that (e.g. src/process/do_process.cpp
perf_process_bundle::handle_trace_point()).


	-ss

> On Mon, Oct 7, 2013 at 6:03 PM, Sergey Senozhatsky
> <sergey.senozhatsky(a)gmail.com> wrote:
> > On (10/07/13 17:26), Shaojie Sun wrote:
> >> From: Jon Medhurst <tixy(a)linaro.org>
> >>
> >> For cpu_frequency events, perf_power_bundle::handle_trace_point()
> >> is always being called with the same cpunr. so the parameter of
> >> cpunr is not equal to the cpu which cpu_frequency events happened.
> >> Lucky the trace event themselves have a cpu_id field to say to which
> >> CPU event it relates, we should use this cpu_id field.
> >>
> >> Signed-off-by:  Jon Medhurst <tixy(a)linaro.org>
> >>               Shaojie Sun <shaojie.sun(a)linaro.com>
> >> ---
> >>  src/cpu/cpu.cpp |    9 +++++++--
> >>  1 file changed, 7 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
> >> index 7f3af69..e304bbe 100644
> >> --- a/src/cpu/cpu.cpp
> >> +++ b/src/cpu/cpu.cpp
> >> @@ -781,10 +781,15 @@ void perf_power_bundle::handle_trace_point(void *trace, int cpunr, uint64_t time
> >>
> >>       if (strcmp(event->name, "power_frequency") == 0
> >>       || strcmp(event->name, "cpu_frequency") == 0){
> >> -
> >> +             ret = pevent_get_field_val(NULL, event, "cpu_id", &rec, &val, 0);
> >> +             if (ret < 0) {
> >> +                     fprintf(stderr, _("power or cpu_frequency event returned no cpu?\n"));
> >> +                     exit(-1);
> >> +             }
> >> +             cpu = all_cpus[val];
> >>               ret = pevent_get_field_val(NULL, event, "state", &rec, &val, 0);
> >>               if (ret < 0) {
> >> -                     fprintf(stderr, _("power or cpu_frequecny event returned no state?\n"));
> >> +                     fprintf(stderr, _("power or cpu_frequency event returned no state?\n"));
> >>                       exit(-1);
> >>               }
> >
> > Hello,
> > why not fixing it in src/perf/perf_bundle (perf_sample's perf_event_header),
> > where we create data for handle_trace_point() ?
> >
> >         -ss
> >
> >> --
> >> 1.7.9.5
> >>
> >> _______________________________________________
> >> PowerTop mailing list
> >> PowerTop(a)lists.01.org
> >> https://lists.01.org/mailman/listinfo/powertop
> >>
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop doesn't show correct frequency stats
@ 2013-10-07 10:03 Sergey Senozhatsky
  0 siblings, 0 replies; 7+ messages in thread
From: Sergey Senozhatsky @ 2013-10-07 10:03 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 1803 bytes --]

On (10/07/13 17:26), Shaojie Sun wrote:
> From: Jon Medhurst <tixy(a)linaro.org>
> 
> For cpu_frequency events, perf_power_bundle::handle_trace_point()
> is always being called with the same cpunr. so the parameter of
> cpunr is not equal to the cpu which cpu_frequency events happened.
> Lucky the trace event themselves have a cpu_id field to say to which
> CPU event it relates, we should use this cpu_id field.
> 
> Signed-off-by:  Jon Medhurst <tixy(a)linaro.org>
> 		Shaojie Sun <shaojie.sun(a)linaro.com>
> ---
>  src/cpu/cpu.cpp |    9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
> index 7f3af69..e304bbe 100644
> --- a/src/cpu/cpu.cpp
> +++ b/src/cpu/cpu.cpp
> @@ -781,10 +781,15 @@ void perf_power_bundle::handle_trace_point(void *trace, int cpunr, uint64_t time
>  
>  	if (strcmp(event->name, "power_frequency") == 0
>  	|| strcmp(event->name, "cpu_frequency") == 0){
> -
> +		ret = pevent_get_field_val(NULL, event, "cpu_id", &rec, &val, 0);
> +		if (ret < 0) {
> +			fprintf(stderr, _("power or cpu_frequency event returned no cpu?\n"));
> +			exit(-1);
> +		}
> +		cpu = all_cpus[val];
>  		ret = pevent_get_field_val(NULL, event, "state", &rec, &val, 0);
>  		if (ret < 0) {
> -			fprintf(stderr, _("power or cpu_frequecny event returned no state?\n"));
> +			fprintf(stderr, _("power or cpu_frequency event returned no state?\n"));
>  			exit(-1);
>  		}

Hello,
why not fixing it in src/perf/perf_bundle (perf_sample's perf_event_header),
where we create data for handle_trace_point() ?

	-ss

> -- 
> 1.7.9.5
> 
> _______________________________________________
> PowerTop mailing list
> PowerTop(a)lists.01.org
> https://lists.01.org/mailman/listinfo/powertop
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-10-08  8:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-07  9:26 [Powertop] [PATCH POWERTOP V3] resolve the bug that powertop doesn't show correct frequency stats Shaojie Sun
2013-10-07 10:03 Sergey Senozhatsky
2013-10-07 11:40 Sergey Senozhatsky
2013-10-07 14:54 Shaojie Sun
2013-10-08  8:45 Shaojie Sun
2013-10-08  8:54 Sergey Senozhatsky
2013-10-08  8:58 Shaojie Sun

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.