diff options
Diffstat (limited to 'arch/x86/kernel/tlb_32.c')
-rw-r--r-- | arch/x86/kernel/tlb_32.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86/kernel/tlb_32.c b/arch/x86/kernel/tlb_32.c index abf0808d6fc4..93fcb05c7d43 100644 --- a/arch/x86/kernel/tlb_32.c +++ b/arch/x86/kernel/tlb_32.c | |||
@@ -84,13 +84,15 @@ EXPORT_SYMBOL_GPL(leave_mm); | |||
84 | * | 84 | * |
85 | * 1) Flush the tlb entries if the cpu uses the mm that's being flushed. | 85 | * 1) Flush the tlb entries if the cpu uses the mm that's being flushed. |
86 | * 2) Leave the mm if we are in the lazy tlb mode. | 86 | * 2) Leave the mm if we are in the lazy tlb mode. |
87 | * | ||
88 | * Interrupts are disabled. | ||
87 | */ | 89 | */ |
88 | 90 | ||
89 | void smp_invalidate_interrupt(struct pt_regs *regs) | 91 | void smp_invalidate_interrupt(struct pt_regs *regs) |
90 | { | 92 | { |
91 | unsigned long cpu; | 93 | unsigned int cpu; |
92 | 94 | ||
93 | cpu = get_cpu(); | 95 | cpu = smp_processor_id(); |
94 | 96 | ||
95 | if (!cpumask_test_cpu(cpu, flush_cpumask)) | 97 | if (!cpumask_test_cpu(cpu, flush_cpumask)) |
96 | goto out; | 98 | goto out; |
@@ -112,12 +114,11 @@ void smp_invalidate_interrupt(struct pt_regs *regs) | |||
112 | } else | 114 | } else |
113 | leave_mm(cpu); | 115 | leave_mm(cpu); |
114 | } | 116 | } |
117 | out: | ||
115 | ack_APIC_irq(); | 118 | ack_APIC_irq(); |
116 | smp_mb__before_clear_bit(); | 119 | smp_mb__before_clear_bit(); |
117 | cpumask_clear_cpu(cpu, flush_cpumask); | 120 | cpumask_clear_cpu(cpu, flush_cpumask); |
118 | smp_mb__after_clear_bit(); | 121 | smp_mb__after_clear_bit(); |
119 | out: | ||
120 | put_cpu_no_resched(); | ||
121 | inc_irq_stat(irq_tlb_count); | 122 | inc_irq_stat(irq_tlb_count); |
122 | } | 123 | } |
123 | 124 | ||
@@ -215,7 +216,6 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long va) | |||
215 | flush_tlb_others(&mm->cpu_vm_mask, mm, va); | 216 | flush_tlb_others(&mm->cpu_vm_mask, mm, va); |
216 | preempt_enable(); | 217 | preempt_enable(); |
217 | } | 218 | } |
218 | EXPORT_SYMBOL(flush_tlb_page); | ||
219 | 219 | ||
220 | static void do_flush_tlb_all(void *info) | 220 | static void do_flush_tlb_all(void *info) |
221 | { | 221 | { |