Merge branch 'for-linus' of git://android.kernel.org/kernel/tegra
[sfrench/cifs-2.6.git] / arch / x86 / mm / tlb.c
index 65b58e4b0b8b6950fab3f6d04fd1526c57be92c9..c03f14ab666742d6960ff3339ebcfe28a003308b 100644 (file)
@@ -41,7 +41,7 @@ union smp_flush_state {
        struct {
                struct mm_struct *flush_mm;
                unsigned long flush_va;
-               spinlock_t tlbstate_lock;
+               raw_spinlock_t tlbstate_lock;
                DECLARE_BITMAP(flush_cpumask, NR_CPUS);
        };
        char pad[INTERNODE_CACHE_BYTES];
@@ -181,7 +181,7 @@ static void flush_tlb_others_ipi(const struct cpumask *cpumask,
         * num_online_cpus() <= NUM_INVALIDATE_TLB_VECTORS, but it is
         * probably not worth checking this for a cache-hot lock.
         */
-       spin_lock(&f->tlbstate_lock);
+       raw_spin_lock(&f->tlbstate_lock);
 
        f->flush_mm = mm;
        f->flush_va = va;
@@ -199,7 +199,7 @@ static void flush_tlb_others_ipi(const struct cpumask *cpumask,
 
        f->flush_mm = NULL;
        f->flush_va = 0;
-       spin_unlock(&f->tlbstate_lock);
+       raw_spin_unlock(&f->tlbstate_lock);
 }
 
 void native_flush_tlb_others(const struct cpumask *cpumask,
@@ -223,7 +223,7 @@ static int __cpuinit init_smp_flush(void)
        int i;
 
        for (i = 0; i < ARRAY_SIZE(flush_state); i++)
-               spin_lock_init(&flush_state[i].tlbstate_lock);
+               raw_spin_lock_init(&flush_state[i].tlbstate_lock);
 
        return 0;
 }
@@ -278,11 +278,9 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long va)
 
 static void do_flush_tlb_all(void *info)
 {
-       unsigned long cpu = smp_processor_id();
-
        __flush_tlb_all();
        if (percpu_read(cpu_tlbstate.state) == TLBSTATE_LAZY)
-               leave_mm(cpu);
+               leave_mm(smp_processor_id());
 }
 
 void flush_tlb_all(void)