summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorHideo Saito <hsaito.ppc@gmail.com>2009-05-24 19:33:34 +0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-05-26 07:46:49 +0400
commit8e35961b57da14cb64cb0e4e1b7e3aabda6396fe (patch)
treea3382764e95b0b760e667f43ddd88d7628c746d7 /arch
parent59a3759d0fe8d969888c741bb33f4946e4d3750d (diff)
downloadlinux-8e35961b57da14cb64cb0e4e1b7e3aabda6396fe.tar.xz
powerpc/mm: Fix broken MMU PID stealing on !SMP
The recent rework of the MMU PID handling for non-hash CPUs has a subtle bug in the !SMP "optimized" variant of the PID stealing function. It clears the PID in the mm context before it calls local_flush_tlb_mm(). However, the later will not flush anything if the PID in the context is clear... Signed-off-by: Hideo Saito <hsaito.ppc@gmail.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/mm/mmu_context_nohash.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/powerpc/mm/mmu_context_nohash.c b/arch/powerpc/mm/mmu_context_nohash.c
index a70e311bd457..030d0005b4d2 100644
--- a/arch/powerpc/mm/mmu_context_nohash.c
+++ b/arch/powerpc/mm/mmu_context_nohash.c
@@ -127,12 +127,12 @@ static unsigned int steal_context_up(unsigned int id)
pr_debug("[%d] steal context %d from mm @%p\n", cpu, id, mm);
- /* Mark this mm has having no context anymore */
- mm->context.id = MMU_NO_CONTEXT;
-
/* Flush the TLB for that context */
local_flush_tlb_mm(mm);
+ /* Mark this mm has having no context anymore */
+ mm->context.id = MMU_NO_CONTEXT;
+
/* XXX This clear should ultimately be part of local_flush_tlb_mm */
__clear_bit(id, stale_map[cpu]);