linux/arch/powerpc/mm
Benjamin Herrenschmidt b46b6942b3 powerpc/mm: Fix a AB->BA deadlock scenario with nohash MMU context lock
The MMU context_lock can be taken from switch_mm() while the
rq->lock is held. The rq->lock can also be taken from interrupts,
thus if we get interrupted in destroy_context() with the context
lock held and that interrupt tries to take the rq->lock, there's
a possible deadlock scenario with another CPU having the rq->lock
and calling switch_mm() which takes our context lock.

The fix is to always ensure interrupts are off when taking our
context lock. The switch_mm() path is already good so this fixes
the destroy_context() path.

While at it, turn the context lock into a new style spinlock.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2009-06-09 16:43:04 +10:00
..
40x_mmu.c powerpc/40x: Limit allocable DRAM during early mapping 2008-11-13 10:10:56 -05:00
44x_mmu.c powerpc: rework 4xx PTE access and TLB miss 2008-07-09 13:36:17 -04:00
dma-noncoherent.c powerpc: Fix up dma_alloc_coherent() on platforms without cache coherency. 2009-05-27 16:33:59 +10:00
fault.c powerpc/mm: Rework I$/D$ coherency (v3) 2009-02-11 16:00:10 +11:00
fsl_booke_mmu.c powerpc/mm: Tweak PTE bit combination definitions 2009-03-24 13:47:33 +11:00
gup.c powerpc/mm: Properly wire up get_user_pages_fast() on 32-bit 2009-03-11 17:11:34 +11:00
hash_low_32.S powerpc/mm: Fix _PAGE_COHERENT support on classic ppc32 HW 2009-02-11 16:07:02 +11:00
hash_low_64.S powerpc: Free a PTE bit on ppc64 with 64K pages 2008-06-30 22:30:53 +10:00
hash_native_64.c powerpc: Add 2.06 tlbie mnemonics 2009-05-21 15:44:21 +10:00
hash_utils_64.c powerpc: Fix crash on CPU hotplug 2009-04-22 14:56:34 +10:00
hugetlbpage.c mm: report the MMU pagesize in /proc/pid/smaps 2009-01-06 15:58:58 -08:00
init_32.c powerpc: Minor cleanups of kernel virt address space definitions 2009-05-27 16:32:50 +10:00
init_64.c powerpc: Get USE_STRICT_MM_TYPECHECKS working again 2008-10-14 10:35:27 +11:00
Makefile powerpc: Move dma-noncoherent.c from arch/powerpc/lib to arch/powerpc/mm 2009-05-27 16:32:05 +10:00
mem.c powerpc: Fix up dma_alloc_coherent() on platforms without cache coherency. 2009-05-27 16:33:59 +10:00
mmap_64.c powerpc/mm: Rename arch/powerpc/kernel/mmap.c to mmap_64.c 2009-03-24 13:47:33 +11:00
mmu_context_hash32.c powerpc/mm: Split mmu_context handling 2008-12-21 14:21:15 +11:00
mmu_context_hash64.c powerpc/mm: Split mmu_context handling 2008-12-21 14:21:15 +11:00
mmu_context_nohash.c powerpc/mm: Fix a AB->BA deadlock scenario with nohash MMU context lock 2009-06-09 16:43:04 +10:00
mmu_decl.h Merge commit 'kumar/kumar-next' into next 2009-01-13 13:59:03 +11:00
numa.c powerpc/numa: Cleanup hot_add_scn_to_nid 2009-02-23 15:53:04 +11:00
pgtable_32.c powerpc: Minor cleanups of kernel virt address space definitions 2009-05-27 16:32:50 +10:00
pgtable_64.c powerpc: Wire up /proc/vmallocinfo to our ioremap() 2009-03-11 17:10:14 +11:00
pgtable.c powerpc: Do not assert pte_locked for hugepage PTE entries 2009-05-18 15:19:04 +10:00
ppc_mmu_32.c powerpc/mm: Tweak PTE bit combination definitions 2009-03-24 13:47:33 +11:00
slb_low.S [POWERPC] vmemmap fixes to use smaller pages 2008-05-15 20:49:25 +10:00
slb.c [POWERPC] vmemmap fixes to use smaller pages 2008-05-15 20:49:25 +10:00
slice.c powerpc: is_hugepage_only_range() must account for both 4kB and 64kB slices 2009-01-16 16:15:16 +11:00
stab.c powerpc: Change u64/s64 to a long long integer type 2009-01-13 14:47:59 +11:00
subpage-prot.c
tlb_hash32.c powerpc/mm: Add SMP support to no-hash TLB handling 2008-12-21 14:21:16 +11:00
tlb_hash64.c cpumask: Use mm_cpumask() wrapper instead of cpu_vm_mask 2009-03-24 13:47:29 +11:00
tlb_nohash_low.S powerpc: fix for long standing bug noticed by gcc 4.4.0 2009-04-23 08:52:16 -05:00
tlb_nohash.c powerpc/mm: Fix compile warning 2009-04-07 22:11:10 -05:00