linux/arch
Benjamin Herrenschmidt ee4f2ea486 [POWERPC] Fix 32-bit mm operations when not using BATs
On hash table based 32 bits powerpc's, the hash management code runs with
a big spinlock. It's thus important that it never causes itself a hash
fault. That code is generally safe (it does memory accesses in real mode
among other things) with the exception of the actual access to the code
itself. That is, the kernel text needs to be accessible without taking
a hash miss exceptions.

This is currently guaranteed by having a BAT register mapping part of the
linear mapping permanently, which includes the kernel text. But this is
not true if using the "nobats" kernel command line option (which can be
useful for debugging) and will not be true when using DEBUG_PAGEALLOC
implemented in a subsequent patch.

This patch fixes this by pre-faulting in the hash table pages that hit
the kernel text, and making sure we never evict such a page under hash
pressure.

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

 arch/powerpc/mm/hash_low_32.S |   22 ++++++++++++++++++++--
 arch/powerpc/mm/mem.c         |    3 ---
 arch/powerpc/mm/mmu_decl.h    |    4 ++++
 arch/powerpc/mm/pgtable_32.c  |   11 +++++++----
 4 files changed, 31 insertions(+), 9 deletions(-)
Signed-off-by: Paul Mackerras <paulus@samba.org>
2007-04-13 04:09:39 +10:00
..
alpha
arm [ARM] Export dma_channel_active() 2007-03-31 21:36:53 +01:00
arm26 [PATCH] arch/arm26/kernel/entry.S: remove dead code 2007-03-01 14:53:35 -08:00
avr32 [PATCH] gpio_direction_output() needs an initial value 2007-03-16 19:25:04 -07:00
cris [PATCH] MSI-X: fix resume crash 2007-03-28 13:59:37 -07:00
frv [PATCH] MSI-X: fix resume crash 2007-03-28 13:59:37 -07:00
h8300 [PATCH] Declare init_irq_proc before we use it. 2007-02-19 14:21:50 -08:00
i386 [PATCH] i386: irqbalance_disable() section fix 2007-04-08 19:47:55 -07:00
ia64 [IA64] SGI Altix : fix pcibr_dmamap_ate32() bug 2007-04-06 15:38:12 -07:00
m32r Various typo fixes. 2007-02-17 19:07:33 +01:00
m68k [PATCH] Declare init_irq_proc before we use it. 2007-02-19 14:21:50 -08:00
m68knommu [PATCH] m68knommu: remove local_bh_count 2007-03-06 18:08:38 -08:00
mips [MIPS] SMTC: Fix recursion in instant IPI replay code. 2007-03-29 23:46:36 +01:00
parisc [PARISC] clocksource: Move update_cr16_clocksource later in boot 2007-02-26 22:21:22 -05:00
powerpc [POWERPC] Fix 32-bit mm operations when not using BATs 2007-04-13 04:09:39 +10:00
ppc [POWERPC] Remove unused header file: arch/ppc/syslib/cpc710.h. 2007-04-13 03:55:16 +10:00
s390 [S390] kprobes: Align probe address. 2007-03-26 20:43:46 +02:00
sh sh: Kill bogus GCC4 symbol exports. 2007-03-28 17:24:47 +09:00
sh64 [PATCH] sysctl: remove insert_at_head from register_sysctl 2007-02-14 08:09:59 -08:00
sparc [SPARC32]: Fix SMP build regression 2007-03-26 21:49:13 -07:00
sparc64 [SPARC64]: store-init needs trailing membar. 2007-03-19 13:27:33 -07:00
um [PATCH] uml: fix unreasonably long udelay 2007-04-02 10:06:08 -07:00
v850 kbuild: Replace remaining "depends" with "depends on" 2007-02-17 19:05:24 +01:00
x86_64 [PATCH] x86_64 early quirks: fix early_qrk[] section tag 2007-04-08 19:47:55 -07:00
xtensa