Patchwork powerpc: Fix ppc32 mm_struct CPU tracking in SMP

login
register
mail settings
Submitter Benjamin Herrenschmidt
Date Nov. 28, 2008, 6:05 a.m.
Message ID <20081128060533.BA31ADDDDB@ozlabs.org>
Download mbox | patch
Permalink /patch/11287/
State Accepted
Commit 4ee5f55175a85fc179c93f00dd7f6a99c896f4d6
Delegated to: Paul Mackerras
Headers show

Comments

Benjamin Herrenschmidt - Nov. 28, 2008, 6:05 a.m.
The 32-bit hash code didn't need it so far so we don't update
mm->cpu_vm_mask on context switch. This however breaks the
merge of the RCU based page table freeing and other upcoming
32-bit embedded SMP work.

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

 arch/powerpc/include/asm/mmu_context.h |    3 +++
 1 file changed, 3 insertions(+)

Patch

--- linux-476.orig/arch/powerpc/include/asm/mmu_context.h	2008-11-28 15:46:39.000000000 +1100
+++ linux-476/arch/powerpc/include/asm/mmu_context.h	2008-11-28 16:59:06.000000000 +1100
@@ -186,6 +186,9 @@  static inline void switch_mm(struct mm_s
 
 	tsk->thread.pgdir = next->pgd;
 
+	if (!cpu_isset(smp_processor_id(), next->cpu_vm_mask))
+		cpu_set(smp_processor_id(), next->cpu_vm_mask);
+
 	/* No need to flush userspace segments if the mm doesnt change */
 	if (prev == next)
 		return;