diff options
author | Grant Likely | 2010-01-28 22:38:25 +0100 |
---|---|---|
committer | Grant Likely | 2010-01-28 22:38:25 +0100 |
commit | 0ada0a73120c28cc432bcdbac061781465c2f48f (patch) | |
tree | d17cadd4ea47e25d9e48e7d409a39c84268fbd27 /arch/sparc/kernel/perf_event.c | |
parent | of: unify phandle name in struct device_node (diff) | |
parent | Linux 2.6.33-rc5 (diff) | |
download | kernel-qcow2-linux-0ada0a73120c28cc432bcdbac061781465c2f48f.tar.gz kernel-qcow2-linux-0ada0a73120c28cc432bcdbac061781465c2f48f.tar.xz kernel-qcow2-linux-0ada0a73120c28cc432bcdbac061781465c2f48f.zip |
Merge commit 'v2.6.33-rc5' into secretlab/test-devicetree
Diffstat (limited to 'arch/sparc/kernel/perf_event.c')
-rw-r--r-- | arch/sparc/kernel/perf_event.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c index fa5936e1c3b9..198fb4e79ba2 100644 --- a/arch/sparc/kernel/perf_event.c +++ b/arch/sparc/kernel/perf_event.c @@ -986,6 +986,17 @@ static int __kprobes perf_event_nmi_handler(struct notifier_block *self, data.addr = 0; cpuc = &__get_cpu_var(cpu_hw_events); + + /* If the PMU has the TOE IRQ enable bits, we need to do a + * dummy write to the %pcr to clear the overflow bits and thus + * the interrupt. + * + * Do this before we peek at the counters to determine + * overflow so we don't lose any events. + */ + if (sparc_pmu->irq_bit) + pcr_ops->write(cpuc->pcr); + for (idx = 0; idx < MAX_HWEVENTS; idx++) { struct perf_event *event = cpuc->events[idx]; struct hw_perf_event *hwc; |