diff options
Diffstat (limited to 'arch/x86/include')
| -rw-r--r-- | arch/x86/include/asm/paravirt.h | 5 | ||||
| -rw-r--r-- | arch/x86/include/asm/paravirt_types.h | 2 | ||||
| -rw-r--r-- | arch/x86/include/asm/tlb.h | 2 | 
3 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h index 5edd1742cfd..7361e47db79 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -703,7 +703,10 @@ static inline void arch_leave_lazy_mmu_mode(void)  	PVOP_VCALL0(pv_mmu_ops.lazy_mode.leave);  } -void arch_flush_lazy_mmu_mode(void); +static inline void arch_flush_lazy_mmu_mode(void) +{ +	PVOP_VCALL0(pv_mmu_ops.lazy_mode.flush); +}  static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,  				phys_addr_t phys, pgprot_t flags) diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h index 142236ed83a..b3b0ec1dac8 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -91,6 +91,7 @@ struct pv_lazy_ops {  	/* Set deferred update mode, used for batching operations. */  	void (*enter)(void);  	void (*leave)(void); +	void (*flush)(void);  };  struct pv_time_ops { @@ -679,6 +680,7 @@ void paravirt_end_context_switch(struct task_struct *next);  void paravirt_enter_lazy_mmu(void);  void paravirt_leave_lazy_mmu(void); +void paravirt_flush_lazy_mmu(void);  void _paravirt_nop(void);  u32 _paravirt_ident_32(u32); diff --git a/arch/x86/include/asm/tlb.h b/arch/x86/include/asm/tlb.h index 4fef20773b8..c7797307fc2 100644 --- a/arch/x86/include/asm/tlb.h +++ b/arch/x86/include/asm/tlb.h @@ -7,7 +7,7 @@  #define tlb_flush(tlb)							\  {									\ -	if (tlb->fullmm == 0)						\ +	if (!tlb->fullmm && !tlb->need_flush_all) 			\  		flush_tlb_mm_range(tlb->mm, tlb->start, tlb->end, 0UL);	\  	else								\  		flush_tlb_mm_range(tlb->mm, 0UL, TLB_FLUSH_ALL, 0UL);	\  |