aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSanjay Lal <sanjayl@kymasys.com>2012-11-21 21:34:11 -0500
committerRalf Baechle <ralf@linux-mips.org>2013-05-07 21:55:36 -0400
commitf9afbd45b0d04e4e1f9bff0b9309f61bfd28491c (patch)
treec2a47ceb77a9280920b0be14965e926c39557adb /arch
parentf2e3656d23b7e2465da22966feef6170e9b28b2b (diff)
MIPS: If KVM is enabled then use the KVM specific routine to flush the TLBs on a ASID wrap.
Signed-off-by: Sanjay Lal <sanjayl@kymasys.com> Cc: kvm@vger.kernel.org Cc: linux-mips@linux-mips.org Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/include/asm/mmu_context.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h
index e81d719efcd1..c42562d801c5 100644
--- a/arch/mips/include/asm/mmu_context.h
+++ b/arch/mips/include/asm/mmu_context.h
@@ -106,15 +106,21 @@ static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
106static inline void 106static inline void
107get_new_mmu_context(struct mm_struct *mm, unsigned long cpu) 107get_new_mmu_context(struct mm_struct *mm, unsigned long cpu)
108{ 108{
109 extern void kvm_local_flush_tlb_all(void);
109 unsigned long asid = asid_cache(cpu); 110 unsigned long asid = asid_cache(cpu);
110 111
111 if (! ((asid += ASID_INC) & ASID_MASK) ) { 112 if (! ((asid += ASID_INC) & ASID_MASK) ) {
112 if (cpu_has_vtag_icache) 113 if (cpu_has_vtag_icache)
113 flush_icache_all(); 114 flush_icache_all();
115#ifdef CONFIG_VIRTUALIZATION
116 kvm_local_flush_tlb_all(); /* start new asid cycle */
117#else
114 local_flush_tlb_all(); /* start new asid cycle */ 118 local_flush_tlb_all(); /* start new asid cycle */
119#endif
115 if (!asid) /* fix version if needed */ 120 if (!asid) /* fix version if needed */
116 asid = ASID_FIRST_VERSION; 121 asid = ASID_FIRST_VERSION;
117 } 122 }
123
118 cpu_context(cpu, mm) = asid_cache(cpu) = asid; 124 cpu_context(cpu, mm) = asid_cache(cpu) = asid;
119} 125}
120 126