sparc64: Do not save/restore interrupts in get_new_mmu_context()
authorKirill Tkhai <tkhai@yandex.ru>
Mon, 8 Apr 2013 20:29:46 +0000 (00:29 +0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 9 Apr 2013 02:50:47 +0000 (22:50 -0400)
get_new_mmu_context() is always called with interrupts disabled.
So it's possible to do this micro optimization.

(Also fix the comment to switch_mm, which is called in both cases)

Signed-off-by: Kirill Tkhai <tkhai@yandex.ru>
CC: David Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/include/asm/mmu_context_64.h
arch/sparc/mm/init_64.c

index 9191ca62ed9cc861c7500ee79f7bac98d077f5b8..3d528f06e4b01c82c2d72bb403efd1e1a91cb473 100644 (file)
@@ -68,7 +68,7 @@ extern void smp_tsb_sync(struct mm_struct *mm);
 
 extern void __flush_tlb_mm(unsigned long, unsigned long);
 
-/* Switch the current MM context.  Interrupts are disabled.  */
+/* Switch the current MM context. */
 static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, struct task_struct *tsk)
 {
        unsigned long ctx_valid, flags;
index 076068f4459e4c2d627b2a60eacd58c6b8bc7242..4ccaa1b9961f5092adc3db34e1069d666d6f1e38 100644 (file)
@@ -681,10 +681,9 @@ void get_new_mmu_context(struct mm_struct *mm)
 {
        unsigned long ctx, new_ctx;
        unsigned long orig_pgsz_bits;
-       unsigned long flags;
        int new_version;
 
-       spin_lock_irqsave(&ctx_alloc_lock, flags);
+       spin_lock(&ctx_alloc_lock);
        orig_pgsz_bits = (mm->context.sparc64_ctx_val & CTX_PGSZ_MASK);
        ctx = (tlb_context_cache + 1) & CTX_NR_MASK;
        new_ctx = find_next_zero_bit(mmu_context_bmap, 1 << CTX_NR_BITS, ctx);
@@ -720,7 +719,7 @@ void get_new_mmu_context(struct mm_struct *mm)
 out:
        tlb_context_cache = new_ctx;
        mm->context.sparc64_ctx_val = new_ctx | orig_pgsz_bits;
-       spin_unlock_irqrestore(&ctx_alloc_lock, flags);
+       spin_unlock(&ctx_alloc_lock);
 
        if (unlikely(new_version))
                smp_new_mmu_context_version();