diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-11-27 20:05:05 +0000 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-12-03 20:46:35 +1100 |
commit | 4ee5f55175a85fc179c93f00dd7f6a99c896f4d6 (patch) | |
tree | bd85e5ec3a21c6ca139e930b5215e3c083f4b170 /arch/powerpc/include/asm | |
parent | 1b98326b91eb9eea346945779e1f245aa66b17ce (diff) |
powerpc: Fix ppc32 mm_struct CPU tracking in SMP
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 will break when we
merge the RCU based page table freeing patch and other upcoming 32-bit
embedded SMP work, so this adds the update.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/include/asm')
-rw-r--r-- | arch/powerpc/include/asm/mmu_context.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h index 6b993ef452f..b570209b71a 100644 --- a/arch/powerpc/include/asm/mmu_context.h +++ b/arch/powerpc/include/asm/mmu_context.h @@ -180,6 +180,9 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, 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; |