Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux
[cascardo/linux.git] / arch / arm / kernel / smp_tlb.c
index e82e1d2..9a52a07 100644 (file)
@@ -98,21 +98,21 @@ static void broadcast_tlb_a15_erratum(void)
                return;
 
        dummy_flush_tlb_a15_erratum();
-       smp_call_function_many(cpu_online_mask, ipi_flush_tlb_a15_erratum,
-                              NULL, 1);
+       smp_call_function(ipi_flush_tlb_a15_erratum, NULL, 1);
 }
 
 static void broadcast_tlb_mm_a15_erratum(struct mm_struct *mm)
 {
-       int cpu;
+       int cpu, this_cpu;
        cpumask_t mask = { CPU_BITS_NONE };
 
        if (!erratum_a15_798181())
                return;
 
        dummy_flush_tlb_a15_erratum();
+       this_cpu = get_cpu();
        for_each_online_cpu(cpu) {
-               if (cpu == smp_processor_id())
+               if (cpu == this_cpu)
                        continue;
                /*
                 * We only need to send an IPI if the other CPUs are running
@@ -127,6 +127,7 @@ static void broadcast_tlb_mm_a15_erratum(struct mm_struct *mm)
                        cpumask_set_cpu(cpu, &mask);
        }
        smp_call_function_many(&mask, ipi_flush_tlb_a15_erratum, NULL, 1);
+       put_cpu();
 }
 
 void flush_tlb_all(void)