diff options
author | Robert Richter <robert.richter@amd.com> | 2010-04-13 16:23:12 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-05-07 05:31:00 -0400 |
commit | 9d0fcba67e47ff398a6fa86476d4884d472dc98a (patch) | |
tree | f8cd48d55b5668f0a8e0b22f0c17d3e9fefc9876 /arch | |
parent | c1726f343b3bfc2ee037e191907c632a31903021 (diff) |
perf, x86: Call x86_setup_perfctr() from .hw_config()
The perfctr setup calls are in the corresponding .hw_config()
functions now. This makes it possible to introduce config functions
for other pmu events that are not perfctr specific.
Also, all of a sudden the code looks much nicer.
Signed-off-by: Robert Richter <robert.richter@amd.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1271190201-25705-4-git-send-email-robert.richter@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/cpu/perf_event.c | 9 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/perf_event_p4.c | 2 |
2 files changed, 3 insertions, 8 deletions
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 3d3bceb9e830..c2c1e10f7b03 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c | |||
@@ -505,7 +505,7 @@ static int x86_pmu_hw_config(struct perf_event *event) | |||
505 | if (event->attr.type == PERF_TYPE_RAW) | 505 | if (event->attr.type == PERF_TYPE_RAW) |
506 | event->hw.config |= event->attr.config & X86_RAW_EVENT_MASK; | 506 | event->hw.config |= event->attr.config & X86_RAW_EVENT_MASK; |
507 | 507 | ||
508 | return 0; | 508 | return x86_setup_perfctr(event); |
509 | } | 509 | } |
510 | 510 | ||
511 | /* | 511 | /* |
@@ -543,12 +543,7 @@ static int __hw_perf_event_init(struct perf_event *event) | |||
543 | event->hw.last_cpu = -1; | 543 | event->hw.last_cpu = -1; |
544 | event->hw.last_tag = ~0ULL; | 544 | event->hw.last_tag = ~0ULL; |
545 | 545 | ||
546 | /* Processor specifics */ | 546 | return x86_pmu.hw_config(event); |
547 | err = x86_pmu.hw_config(event); | ||
548 | if (err) | ||
549 | return err; | ||
550 | |||
551 | return x86_setup_perfctr(event); | ||
552 | } | 547 | } |
553 | 548 | ||
554 | static void x86_pmu_disable_all(void) | 549 | static void x86_pmu_disable_all(void) |
diff --git a/arch/x86/kernel/cpu/perf_event_p4.c b/arch/x86/kernel/cpu/perf_event_p4.c index 15367cce66bd..9e002054cb5f 100644 --- a/arch/x86/kernel/cpu/perf_event_p4.c +++ b/arch/x86/kernel/cpu/perf_event_p4.c | |||
@@ -455,7 +455,7 @@ static int p4_hw_config(struct perf_event *event) | |||
455 | (p4_config_pack_escr(P4_ESCR_MASK_HT) | | 455 | (p4_config_pack_escr(P4_ESCR_MASK_HT) | |
456 | p4_config_pack_cccr(P4_CCCR_MASK_HT)); | 456 | p4_config_pack_cccr(P4_CCCR_MASK_HT)); |
457 | 457 | ||
458 | return 0; | 458 | return x86_setup_perfctr(event); |
459 | } | 459 | } |
460 | 460 | ||
461 | static inline void p4_pmu_clear_cccr_ovf(struct hw_perf_event *hwc) | 461 | static inline void p4_pmu_clear_cccr_ovf(struct hw_perf_event *hwc) |