Prev: [PATCH v2] Documentation/sysctl/vm.txt typo
Next: perf tools: allow cross compiling with DWARF support
From: Will Deacon on 25 Jun 2010 07:20 Hi Peter, On Thu, 2010-06-24 at 15:28 +0100, Peter Zijlstra wrote: > These patches prepare the perf code for multiple pmus (no user > interface yet, Lin Ming is working on that). These patches remove all > weak functions and rework the struct pmu interface. > > The patches are boot tested on x86_64 and compile tested on: powerpc > (!fsl, what config is that?), sparc and arm (sorry no SH compiler) > I tried to test these for ARM, but I get compilation errors. Maybe you forgot to enable perf in the ARM .config? Anyway, the compiler log is: CC arch/arm/kernel/perf_event.o arch/arm/kernel/perf_event.c: In function 'validate_event': arch/arm/kernel/perf_event.c:342: error: 'pmu' undeclared (first use in this function) arch/arm/kernel/perf_event.c:342: error: (Each undeclared identifier is reported only once arch/arm/kernel/perf_event.c:342: error: for each function it appears in.) arch/arm/kernel/perf_event.c: In function 'armpmu_event_init': arch/arm/kernel/perf_event.c:536: warning: return makes integer from pointer without a cast arch/arm/kernel/perf_event.c: In function 'init_hw_perf_events': arch/arm/kernel/perf_event.c:3037: error: expected ';' before 'return' arch/arm/kernel/perf_event.c:3038: warning: no return statement in function returning non-void make[1]: *** [arch/arm/kernel/perf_event.o] Error 1 make: *** [arch/arm/kernel] Error 2 I think there's a missing semicolon, an ERR_PTR that should be a PTR_ERR and an ordering issue with the pmu struct. Cheers, Will -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Peter Zijlstra on 25 Jun 2010 07:20 On Fri, 2010-06-25 at 12:11 +0100, Will Deacon wrote: > Hi Peter, > > On Thu, 2010-06-24 at 15:28 +0100, Peter Zijlstra wrote: > > These patches prepare the perf code for multiple pmus (no user > > interface yet, Lin Ming is working on that). These patches remove all > > weak functions and rework the struct pmu interface. > > > > The patches are boot tested on x86_64 and compile tested on: powerpc > > (!fsl, what config is that?), sparc and arm (sorry no SH compiler) > > > > I tried to test these for ARM, but I get compilation errors. Maybe you > forgot to enable perf in the ARM .config? Anyway, the compiler log is: > > CC arch/arm/kernel/perf_event.o > arch/arm/kernel/perf_event.c: In function 'validate_event': > arch/arm/kernel/perf_event.c:342: error: 'pmu' undeclared (first use in this function) > arch/arm/kernel/perf_event.c:342: error: (Each undeclared identifier is reported only once > arch/arm/kernel/perf_event.c:342: error: for each function it appears in.) > arch/arm/kernel/perf_event.c: In function 'armpmu_event_init': > arch/arm/kernel/perf_event.c:536: warning: return makes integer from pointer without a cast > arch/arm/kernel/perf_event.c: In function 'init_hw_perf_events': > arch/arm/kernel/perf_event.c:3037: error: expected ';' before 'return' > arch/arm/kernel/perf_event.c:3038: warning: no return statement in function returning non-void > make[1]: *** [arch/arm/kernel/perf_event.o] Error 1 > make: *** [arch/arm/kernel] Error 2 > > I think there's a missing semicolon, an ERR_PTR that should be a PTR_ERR > and an ordering issue with the pmu struct. I seem to have lost a refresh before sending the emails, please check: git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-perf.git perf-pmu I pushed out updated patches there. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Will Deacon on 25 Jun 2010 10:40 Hello, On Fri, 2010-06-25 at 12:16 +0100, Peter Zijlstra wrote: > I seem to have lost a refresh before sending the emails, please check: > > git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-perf.git perf-pmu > > I pushed out updated patches there. Ok, I rebuilt my Kernel and perf tools from that tree and tested it on a quad-core ARMv7 board. Per-task counters appear to work (software and hardware) but pinned hardware counters always return 0: root(a)will-lucid-nfs:~# perf stat -a -e cs -e cycles -e instructions -- ls linux-2.6 tmp Performance counter stats for 'ls': 33 context-switches 0 cycles 0 instructions # 0.000 IPC 0.028572009 seconds time elapsed It's odd if only ARM is affected in this way. Do pinned events still work for other people? Will -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Peter Zijlstra on 25 Jun 2010 11:00 On Fri, 2010-06-25 at 15:36 +0100, Will Deacon wrote: > Hello, > > On Fri, 2010-06-25 at 12:16 +0100, Peter Zijlstra wrote: > > I seem to have lost a refresh before sending the emails, please check: > > > > git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-perf.git perf-pmu > > > > I pushed out updated patches there. > > Ok, I rebuilt my Kernel and perf tools from that tree and tested it on a > quad-core ARMv7 board. Ooh, neat toy ;-) > Per-task counters appear to work (software and > hardware) but pinned hardware counters always return 0: > > > root(a)will-lucid-nfs:~# perf stat -a -e cs -e cycles -e instructions -- ls > linux-2.6 tmp > > Performance counter stats for 'ls': > > 33 context-switches > 0 cycles > 0 instructions # 0.000 IPC > > 0.028572009 seconds time elapsed > > > It's odd if only ARM is affected in this way. Do pinned events still work > for other people? /me goes build that exact tree on his x86_64.. and gets: # perf stat -a -e cs -e cycles -e instructions -- ls > /dev/null Performance counter stats for 'ls': 51 context-switches 24963513 cycles 9225808 instructions # 0.370 IPC 0.002389051 seconds time elapsed Not exactly sure how I could have messed up the ARM architecture code to make this happen though... will have a peek. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Matt Fleming on 26 Jun 2010 07:30 On Thu, 24 Jun 2010 16:28:04 +0200, Peter Zijlstra <a.p.zijlstra(a)chello.nl> wrote: > These patches prepare the perf code for multiple pmus (no user > interface yet, Lin Ming is working on that). These patches remove all > weak functions and rework the struct pmu interface. > > The patches are boot tested on x86_64 and compile tested on: powerpc > (!fsl, what config is that?), sparc and arm (sorry no SH compiler) Hi Peter, I tried your SH changes and I needed to apply this patch to get it to compile. I haven't run the code yet, but I'll do that later today. --- diff --git a/arch/sh/kernel/perf_event.c b/arch/sh/kernel/perf_event.c index 50ff852..6bfbaec 100644 --- a/arch/sh/kernel/perf_event.c +++ b/arch/sh/kernel/perf_event.c @@ -251,7 +251,7 @@ static void sh_pmu_del(struct perf_event *event, int flags) perf_event_update_userpage(event); } -static int sh_pmu_enable(struct perf_event *event, int flags) +static int sh_pmu_add(struct perf_event *event, int flags) { struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); struct hw_perf_event *hwc = &event->hw; @@ -283,7 +283,7 @@ static void sh_pmu_read(struct perf_event *event) sh_perf_event_update(event, &event->hw, event->hw.idx); } -static in sh_pmu_event_init(struct perf_event *event) +static int sh_pmu_event_init(struct perf_event *event) { int err = __hw_perf_event_init(event); if (unlikely(err)) { @@ -345,15 +345,15 @@ sh_pmu_notifier(struct notifier_block *self, unsigned long action, void *hcpu) return NOTIFY_OK; } -int __cpuinit register_sh_pmu(struct sh_pmu *pmu) +int __cpuinit register_sh_pmu(struct sh_pmu *_pmu) { if (sh_pmu) return -EBUSY; - sh_pmu = pmu; + sh_pmu = _pmu; - pr_info("Performance Events: %s support registered\n", pmu->name); + pr_info("Performance Events: %s support registered\n", _pmu->name); - WARN_ON(pmu->num_events > MAX_HWEVENTS); + WARN_ON(_pmu->num_events > MAX_HWEVENTS); perf_pmu_register(&pmu); perf_cpu_notifier(sh_pmu_notifier); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|
Next
|
Last
Pages: 1 2 3 4 5 Prev: [PATCH v2] Documentation/sysctl/vm.txt typo Next: perf tools: allow cross compiling with DWARF support |