diff options
Diffstat (limited to 'arch/arm')
| -rw-r--r-- | arch/arm/kernel/smp_tlb.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c index e82e1d248772..9a52a07aa40e 100644 --- a/arch/arm/kernel/smp_tlb.c +++ b/arch/arm/kernel/smp_tlb.c | |||
| @@ -98,21 +98,21 @@ static void broadcast_tlb_a15_erratum(void) | |||
| 98 | return; | 98 | return; |
| 99 | 99 | ||
| 100 | dummy_flush_tlb_a15_erratum(); | 100 | dummy_flush_tlb_a15_erratum(); |
| 101 | smp_call_function_many(cpu_online_mask, ipi_flush_tlb_a15_erratum, | 101 | smp_call_function(ipi_flush_tlb_a15_erratum, NULL, 1); |
| 102 | NULL, 1); | ||
| 103 | } | 102 | } |
| 104 | 103 | ||
| 105 | static void broadcast_tlb_mm_a15_erratum(struct mm_struct *mm) | 104 | static void broadcast_tlb_mm_a15_erratum(struct mm_struct *mm) |
| 106 | { | 105 | { |
| 107 | int cpu; | 106 | int cpu, this_cpu; |
| 108 | cpumask_t mask = { CPU_BITS_NONE }; | 107 | cpumask_t mask = { CPU_BITS_NONE }; |
| 109 | 108 | ||
| 110 | if (!erratum_a15_798181()) | 109 | if (!erratum_a15_798181()) |
| 111 | return; | 110 | return; |
| 112 | 111 | ||
| 113 | dummy_flush_tlb_a15_erratum(); | 112 | dummy_flush_tlb_a15_erratum(); |
| 113 | this_cpu = get_cpu(); | ||
| 114 | for_each_online_cpu(cpu) { | 114 | for_each_online_cpu(cpu) { |
| 115 | if (cpu == smp_processor_id()) | 115 | if (cpu == this_cpu) |
| 116 | continue; | 116 | continue; |
| 117 | /* | 117 | /* |
| 118 | * We only need to send an IPI if the other CPUs are running | 118 | * 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) | |||
| 127 | cpumask_set_cpu(cpu, &mask); | 127 | cpumask_set_cpu(cpu, &mask); |
| 128 | } | 128 | } |
| 129 | smp_call_function_many(&mask, ipi_flush_tlb_a15_erratum, NULL, 1); | 129 | smp_call_function_many(&mask, ipi_flush_tlb_a15_erratum, NULL, 1); |
| 130 | put_cpu(); | ||
| 130 | } | 131 | } |
| 131 | 132 | ||
| 132 | void flush_tlb_all(void) | 133 | void flush_tlb_all(void) |
