kernel_optimize_test/arch
Paul Mackerras dcd945e0d8 perf_counter: powerpc: Fix race causing "oops trying to read PMC0" errors
When using interrupting counters and limited (non-interrupting)
counters at the same time, it's possible that we get an
interrupt in write_mmcr0() after writing MMCR0 but before we
have set up the counters using limited PMCs.  What happens then
is that we get into perf_counter_interrupt() with
counter->hw.idx = 0 for the limited counters, leading to the
"oops trying to read PMC0" error message being printed.

This fixes the problem by making perf_counter_interrupt()
robust against counter->hw.idx being zero (the counter is just
ignored in that case) and also by changing write_mmcr0() to
write MMCR0 initially with the counter overflow interrupt
enable bits masked (set to 0).  If the MMCR0 value requested by
the caller has either of those bits set, we write MMCR0 again
with the requested value of those bits after setting up the
limited counters properly.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: John Kacur <jkacur@redhat.com>
Cc: Stephane Eranian <eranian@googlemail.com>
LKML-Reference: <18982.17684.138182.954599@cargo.ozlabs.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-06-03 11:49:53 +02:00
..
alpha alpha: unbreak percpu again 2009-05-12 14:11:35 -07:00
arm flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
avr32
blackfin flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
cris
frv
h8300 flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
ia64
m32r flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
m68k flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
m68knommu
microblaze microblaze: Fix kind-of-intr checking against number of interrupts 2009-05-18 14:47:42 +02:00
mips MIPS: IP32: Remove unnecessary if not even harmful volatile keywords. 2009-05-22 13:52:06 +01:00
mn10300
parisc
powerpc perf_counter: powerpc: Fix race causing "oops trying to read PMC0" errors 2009-06-03 11:49:53 +02:00
s390
sh flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
sparc
um
x86 perf_counter/x86: Remove the IRQ (non-NMI) handling bits 2009-06-03 09:53:34 +02:00
xtensa xtensa: Fix linker script to include .literal sections 2009-05-11 23:40:33 -07:00
.gitignore
Kconfig