summaryrefslogtreecommitdiffstats
path: root/arch/x86/mm/tlb.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-09-04 14:44:16 +0200
committerIngo Molnar <mingo@elte.hu>2009-09-04 14:44:16 +0200
commit695a461296e5df148c99ac087b9e1cb380f4db15 (patch)
tree951893036fdc0b7bae0e17bc739ac8ffe909781d /arch/x86/mm/tlb.c
parentc7084b35eb1a4d3353a501508baf9d3d82822c93 (diff)
parent2b681fafcc50fea6304ed418667c9d04282acb73 (diff)
downloadkernel-crypto-695a461296e5df148c99ac087b9e1cb380f4db15.tar.gz
kernel-crypto-695a461296e5df148c99ac087b9e1cb380f4db15.tar.xz
kernel-crypto-695a461296e5df148c99ac087b9e1cb380f4db15.zip
Merge branch 'amd-iommu/2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu
Diffstat (limited to 'arch/x86/mm/tlb.c')
-rw-r--r--arch/x86/mm/tlb.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
index 821e97017e9..c814e144a3f 100644
--- a/arch/x86/mm/tlb.c
+++ b/arch/x86/mm/tlb.c
@@ -183,18 +183,17 @@ static void flush_tlb_others_ipi(const struct cpumask *cpumask,
f->flush_mm = mm;
f->flush_va = va;
- cpumask_andnot(to_cpumask(f->flush_cpumask),
- cpumask, cpumask_of(smp_processor_id()));
-
- /*
- * We have to send the IPI only to
- * CPUs affected.
- */
- apic->send_IPI_mask(to_cpumask(f->flush_cpumask),
- INVALIDATE_TLB_VECTOR_START + sender);
+ if (cpumask_andnot(to_cpumask(f->flush_cpumask), cpumask, cpumask_of(smp_processor_id()))) {
+ /*
+ * We have to send the IPI only to
+ * CPUs affected.
+ */
+ apic->send_IPI_mask(to_cpumask(f->flush_cpumask),
+ INVALIDATE_TLB_VECTOR_START + sender);
- while (!cpumask_empty(to_cpumask(f->flush_cpumask)))
- cpu_relax();
+ while (!cpumask_empty(to_cpumask(f->flush_cpumask)))
+ cpu_relax();
+ }
f->flush_mm = NULL;
f->flush_va = 0;