From 691fa5ba980873bd0f66b3880ad723124d8bf382 Mon Sep 17 00:00:00 2001 From: Peter Chubb Date: Thu, 23 Jun 2005 21:14:00 -0700 Subject: [PATCH] --- yaml --- r: 3985 b: refs/heads/master c: a68db763af9b676590c3fe9ec3f17bf18015eb2f h: refs/heads/master i: 3983: 71b465ba54a0bd3c96c6e7c3ff5137bff344f061 v: v3 --- [refs] | 2 +- trunk/arch/ia64/kernel/smp.c | 3 +++ trunk/include/asm-ia64/mmu_context.h | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 6ba15e01cec5..02fae0a446ae 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 819c67e69c4e0062787e27dd989f5f9d00d4834e +refs/heads/master: a68db763af9b676590c3fe9ec3f17bf18015eb2f diff --git a/trunk/arch/ia64/kernel/smp.c b/trunk/arch/ia64/kernel/smp.c index b49d4ddaab93..0166a9847095 100644 --- a/trunk/arch/ia64/kernel/smp.c +++ b/trunk/arch/ia64/kernel/smp.c @@ -231,13 +231,16 @@ smp_flush_tlb_all (void) void smp_flush_tlb_mm (struct mm_struct *mm) { + preempt_disable(); /* this happens for the common case of a single-threaded fork(): */ if (likely(mm == current->active_mm && atomic_read(&mm->mm_users) == 1)) { local_finish_flush_tlb_mm(mm); + preempt_enable(); return; } + preempt_enable(); /* * We could optimize this further by using mm->cpu_vm_mask to track which CPUs * have been running in the address space. It's not clear that this is worth the diff --git a/trunk/include/asm-ia64/mmu_context.h b/trunk/include/asm-ia64/mmu_context.h index 0096e7e05012..e3e5fededb04 100644 --- a/trunk/include/asm-ia64/mmu_context.h +++ b/trunk/include/asm-ia64/mmu_context.h @@ -132,6 +132,9 @@ reload_context (mm_context_t context) ia64_srlz_i(); /* srlz.i implies srlz.d */ } +/* + * Must be called with preemption off + */ static inline void activate_context (struct mm_struct *mm) {