linux/arch/powerpc
Benjamin Herrenschmidt a546498f3b powerpc: Call do_page_fault() with interrupts off
We currently turn interrupts back to their previous state before
calling do_page_fault(). This can be annoying when debugging as
a bad fault will potentially have lost some processor state before
getting into the debugger.

We also end up calling some generic code with interrupts enabled
such as notify_page_fault() with interrupts enabled, which could
be unexpected.

This changes our code to behave more like other architectures,
and make the assembly entry code call into do_page_faults() with
interrupts disabled. They are conditionally re-enabled from
within do_page_fault() in the same spot x86 does it.

While there, add the might_sleep() test in the case of a successful
trylock of the mmap semaphore, again like x86.

Also fix a bug in the existing assembly where r12 (_MSR) could get
clobbered by C calls (the DTL accounting in the exception common
macro and DISABLE_INTS) in some cases.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---

v2. Add the r12 clobber fix
2012-03-09 10:55:08 +11:00
..
boot powerpc/mpic: Add "last-interrupt-source" property to override hardware 2012-02-23 10:50:00 +11:00
configs powerpc: remove CONFIG_PPC_ISERIES from the architecture Kconfig files 2012-02-27 11:33:58 +11:00
include/asm powerpc: Call do_page_fault() with interrupts off 2012-03-09 10:55:08 +11:00
kernel powerpc: Call do_page_fault() with interrupts off 2012-03-09 10:55:08 +11:00
kvm arch/powerpc/kvm/book3s_hv.c: included linux/sched.h twice 2012-02-27 11:33:58 +11:00
lib powerpc: POWER7 optimised copy_to_user/copy_from_user using VMX 2011-12-19 14:40:40 +11:00
math-emu powerpc/math_emu/efp: Look for errata handler when type mismatches 2011-10-06 23:36:47 -05:00
mm powerpc: Call do_page_fault() with interrupts off 2012-03-09 10:55:08 +11:00
net net: filter: BPF 'JIT' compiler for PPC64 2011-07-21 12:38:32 -07:00
oprofile
perf powerpc/perf: Move perf core & PMU code into a subdirectory 2012-02-23 10:50:04 +11:00
platforms powerpc: Remove the main legacy iSerie platform code 2012-03-09 10:35:11 +11:00
sysdev powerpc/mpic: Fix allocation of reverse-map for multi-ISU mpics 2012-02-27 11:33:58 +11:00
xmon powerpc/xmon: Fix #if typo for systems without MSR[RI] 2011-11-25 14:11:28 +11:00
Kconfig powerpc: Make SPARSE_IRQ required 2012-03-07 17:09:04 +11:00
Kconfig.debug powerpc: remove CONFIG_PPC_ISERIES from the architecture Kconfig files 2012-02-27 11:33:58 +11:00
Makefile powerpc/perf: Move perf core & PMU code into a subdirectory 2012-02-23 10:50:04 +11:00
relocs_check.pl powerpc: Process dynamic relocations for kernel 2011-12-20 10:21:08 -05:00