aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu/perf_event_p4.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2010-10-05 09:47:14 +0200
committerIngo Molnar <mingo@elte.hu>2010-10-05 09:47:14 +0200
commit00e8976200665eec2fa9264d61885b4d1384d4f0 (patch)
tree5554648e4411fcd6909214f71370348567cf4b2d /arch/x86/kernel/cpu/perf_event_p4.c
parentperf_events: Fix invalid pointer when pid is invalid (diff)
parentperf trace scripting: Fix extern struct definitions (diff)
downloadlinux-dev-00e8976200665eec2fa9264d61885b4d1384d4f0.tar.xz
linux-dev-00e8976200665eec2fa9264d61885b4d1384d4f0.zip
Merge branch 'perf/urgent' into perf/core
Conflicts: tools/perf/util/ui/browsers/hists.c Merge reason: fix the conflict and merge in changes for dependent patch. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event_p4.c')
-rw-r--r--arch/x86/kernel/cpu/perf_event_p4.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_p4.c b/arch/x86/kernel/cpu/perf_event_p4.c
index c70c878ee02a..81400b93e694 100644
--- a/arch/x86/kernel/cpu/perf_event_p4.c
+++ b/arch/x86/kernel/cpu/perf_event_p4.c
@@ -904,8 +904,12 @@ static int p4_pmu_handle_irq(struct pt_regs *regs)
for (idx = 0; idx < x86_pmu.num_counters; idx++) {
int overflow;
- if (!test_bit(idx, cpuc->active_mask))
+ if (!test_bit(idx, cpuc->active_mask)) {
+ /* catch in-flight IRQs */
+ if (__test_and_clear_bit(idx, cpuc->running))
+ handled++;
continue;
+ }
event = cpuc->events[idx];
hwc = &event->hw;