linux_dsm_epyc7002/arch
Paul Mackerras 0fe1ac48be powerpc/perf_event: Fix oops due to perf_event_do_pending call
Anton Blanchard found that large POWER systems would occasionally
crash in the exception exit path when profiling with perf_events.
The symptom was that an interrupt would occur late in the exit path
when the MSR[RI] (recoverable interrupt) bit was clear.  Interrupts
should be hard-disabled at this point but they were enabled.  Because
the interrupt was not recoverable the system panicked.

The reason is that the exception exit path was calling
perf_event_do_pending after hard-disabling interrupts, and
perf_event_do_pending will re-enable interrupts.

The simplest and cleanest fix for this is to use the same mechanism
that 32-bit powerpc does, namely to cause a self-IPI by setting the
decrementer to 1.  This means we can remove the tests in the exception
exit path and raw_local_irq_restore.

This also makes sure that the call to perf_event_do_pending from
timer_interrupt() happens within irq_enter/irq_exit.  (Note that
calling perf_event_do_pending from timer_interrupt does not mean that
there is a possible 1/HZ latency; setting the decrementer to 1 ensures
that the timer interrupt will happen immediately, i.e. within one
timebase tick, which is a few nanoseconds or 10s of nanoseconds.)

Signed-off-by: Paul Mackerras <paulus@samba.org>
Cc: stable@kernel.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2010-05-12 14:34:00 +10:00
..
alpha include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
arm Merge branch 'v4l_for_2.6.34' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2010-05-07 13:58:56 -07:00
avr32 arch/avr32: fix build failure caused by wrong prototype 2010-04-27 16:26:03 -07:00
blackfin include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cris include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
frv frv: fix kernel/user segment handling in NOMMU mode 2010-04-07 08:38:05 -07:00
h8300 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ia64 KVM: fix the handling of dirty bitmaps to avoid overflows 2010-04-20 13:06:55 +03:00
m32r include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
m68k m68knommu: fix coldfire tcdrain 2010-04-21 13:43:06 +10:00
m68knommu m68knommu: remove a duplicate vector setting line for 68360 2010-04-21 13:43:06 +10:00
microblaze microblaze: Defconfig update 2010-05-06 11:37:42 +02:00
mips MIPS: Loongson 2F: Fix of problems introduced by -mfix-loongson2f-jump 2010-04-30 20:52:58 +01:00
mn10300 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
parisc include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
powerpc powerpc/perf_event: Fix oops due to perf_event_do_pending call 2010-05-12 14:34:00 +10:00
s390 [S390] vdso: use ntp adjusted clock multiplier 2010-04-22 17:17:19 +02:00
score include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sh sh: sh7751 pci controller io port fix 2010-04-26 16:02:25 +09:00
sparc sparc64: Fix hardirq tracing in trap return path. 2010-04-20 00:48:37 -07:00
um uml: Fix build breakage after slab.h changes 2010-04-19 17:46:23 +09:00
x86 kprobes/x86: Fix removed int3 checking order 2010-05-11 09:14:25 +02:00
xtensa include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
.gitignore
Kconfig Merge branch 'perf-probes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-03-05 10:50:22 -08:00