We only need to switch contexts when prev != next, and we don't need to disable interrupts to do the check. Signed-off-by: John David Anglin <dave.anglin@xxxxxxxx>
diff --git a/arch/parisc/include/asm/mmu_context.h b/arch/parisc/include/asm/mmu_context.h index a81226257878..b1dc6e3f0dd0 100644 --- a/arch/parisc/include/asm/mmu_context.h +++ b/arch/parisc/include/asm/mmu_context.h @@ -49,26 +49,19 @@ static inline void load_context(mm_context_t context) mtctl(__space_to_prot(context), 8); } -static inline void switch_mm_irqs_off(struct mm_struct *prev, +static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk) { + unsigned long flags; + if (prev != next) { + local_irq_save(flags); mtctl(__pa(next->pgd), 25); load_context(next->context); + local_irq_restore(flags); } } -static inline void switch_mm(struct mm_struct *prev, - struct mm_struct *next, struct task_struct *tsk) -{ - unsigned long flags; - - local_irq_save(flags); - switch_mm_irqs_off(prev, next, tsk); - local_irq_restore(flags); -} -#define switch_mm_irqs_off switch_mm_irqs_off - #define deactivate_mm(tsk,mm) do { } while (0) static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
-- John David Anglin dave.anglin@xxxxxxxx