All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch] x86, mm: avoid stale tlb entries by clearing prev mm_cpumask after switching mm
@ 2011-02-02 20:07 Suresh Siddha
  2011-02-03  1:23 ` Andi Kleen
  2011-02-03  1:55 ` Linus Torvalds
  0 siblings, 2 replies; 17+ messages in thread
From: Suresh Siddha @ 2011-02-02 20:07 UTC (permalink / raw)
  To: H. Peter Anvin, Ingo Molnar, Thomas Gleixner, Linus Torvalds
  Cc: LKML, Mallick, Asit K

For the prev mm that is handing over the cpu to another mm, clear the cpu
from the mm_cpumask(prev) after the cr3 is changed.

Otherwise, clearing the mm_cpumask early will avoid the flush tlb IPI's while
the cr3 and TLB's are still pointing to the prev mm. And this window can lead
to the stale (global) TLB entries.

Marking it for -stable, though we haven't seen any reported failure that
can be attributed to this.

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: stable@kernel.org	[v2.6.32+]
---
 arch/x86/include/asm/mmu_context.h |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
index 4a2d4e0..8b5393e 100644
--- a/arch/x86/include/asm/mmu_context.h
+++ b/arch/x86/include/asm/mmu_context.h
@@ -36,8 +36,6 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
 	unsigned cpu = smp_processor_id();
 
 	if (likely(prev != next)) {
-		/* stop flush ipis for the previous mm */
-		cpumask_clear_cpu(cpu, mm_cpumask(prev));
 #ifdef CONFIG_SMP
 		percpu_write(cpu_tlbstate.state, TLBSTATE_OK);
 		percpu_write(cpu_tlbstate.active_mm, next);
@@ -47,6 +45,9 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
 		/* Re-load page tables */
 		load_cr3(next->pgd);
 
+		/* stop flush ipis for the previous mm */
+		cpumask_clear_cpu(cpu, mm_cpumask(prev));
+
 		/*
 		 * load the LDT, if the LDT is different:
 		 */



^ permalink raw reply related	[flat|nested] 17+ messages in thread
[parent not found: <BLU157-w495F35A445E063E33DC9E8DAAC0@phx.gbl>]

end of thread, other threads:[~2011-04-15 11:58 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-02 20:07 [patch] x86, mm: avoid stale tlb entries by clearing prev mm_cpumask after switching mm Suresh Siddha
2011-02-03  1:23 ` Andi Kleen
2011-02-03  1:55   ` Suresh Siddha
2011-02-03  2:15     ` Andi Kleen
2011-02-03  4:12       ` Linus Torvalds
2011-02-03  4:22         ` H. Peter Anvin
2011-02-03  1:55 ` Linus Torvalds
2011-02-03  4:03   ` Linus Torvalds
2011-02-03 18:27     ` Suresh Siddha
2011-02-03 19:13       ` Linus Torvalds
2011-02-03 19:34         ` Suresh Siddha
2011-02-03 19:48           ` Linus Torvalds
2011-02-03 20:20             ` Suresh Siddha
2011-02-03 21:06               ` Ingo Molnar
2011-02-03 21:33                 ` Linus Torvalds
2011-02-03 21:39                   ` Ingo Molnar
     [not found] <BLU157-w495F35A445E063E33DC9E8DAAC0@phx.gbl>
     [not found] ` <BLU157-w41A610FD3413183801060CDAAC0@phx.gbl>
     [not found]   ` <BLU157-w548B9D2F8EDD8CA9DB6CD3DAAC0@phx.gbl>
2011-04-15 11:58     ` MaoXiaoyun

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.