diff options
author | Cyrill Gorcunov <gorcunov@openvz.org> | 2011-07-08 16:17:12 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2011-07-14 17:25:04 -0400 |
commit | f91298709790b9a483752ca3c967845537df2af3 (patch) | |
tree | f7392e3d37b9aa78ef04bdf89bc0d45d2db401e3 /kernel/watchdog.c | |
parent | 4a9bd3f134decd6d16ead8d288342d57aad486be (diff) |
perf, x86: P4 PMU - Introduce event alias feature
Instead of hw_nmi_watchdog_set_attr() weak function
and appropriate x86_pmu::hw_watchdog_set_attr() call
we introduce even alias mechanism which allow us
to drop this routines completely and isolate quirks
of Netburst architecture inside P4 PMU code only.
The main idea remains the same though -- to allow
nmi-watchdog and perf top run simultaneously.
Note the aliasing mechanism applies to generic
PERF_COUNT_HW_CPU_CYCLES event only because arbitrary
event (say passed as RAW initially) might have some
additional bits set inside ESCR register changing
the behaviour of event and we can't guarantee anymore
that alias event will give the same result.
P.S. Thanks a huge to Don and Steven for for testing
and early review.
Acked-by: Don Zickus <dzickus@redhat.com>
Tested-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
CC: Ingo Molnar <mingo@elte.hu>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: Stephane Eranian <eranian@google.com>
CC: Lin Ming <ming.m.lin@intel.com>
CC: Arnaldo Carvalho de Melo <acme@redhat.com>
CC: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/r/20110708201712.GS23657@sun
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/watchdog.c')
-rw-r--r-- | kernel/watchdog.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/kernel/watchdog.c b/kernel/watchdog.c index a933e3a0398b..36491cd5b7d4 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c | |||
@@ -200,7 +200,6 @@ static int is_softlockup(unsigned long touch_ts) | |||
200 | } | 200 | } |
201 | 201 | ||
202 | #ifdef CONFIG_HARDLOCKUP_DETECTOR | 202 | #ifdef CONFIG_HARDLOCKUP_DETECTOR |
203 | void __weak hw_nmi_watchdog_set_attr(struct perf_event_attr *wd_attr) { } | ||
204 | 203 | ||
205 | static struct perf_event_attr wd_hw_attr = { | 204 | static struct perf_event_attr wd_hw_attr = { |
206 | .type = PERF_TYPE_HARDWARE, | 205 | .type = PERF_TYPE_HARDWARE, |
@@ -372,7 +371,6 @@ static int watchdog_nmi_enable(int cpu) | |||
372 | 371 | ||
373 | wd_attr = &wd_hw_attr; | 372 | wd_attr = &wd_hw_attr; |
374 | wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh); | 373 | wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh); |
375 | hw_nmi_watchdog_set_attr(wd_attr); | ||
376 | 374 | ||
377 | /* Try to register using hardware perf events */ | 375 | /* Try to register using hardware perf events */ |
378 | event = perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL); | 376 | event = perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL); |