| .. | .. | 
|---|
| 6 | 6 |  #define tlb_end_vma(tlb, vma) do { } while (0) | 
|---|
| 7 | 7 |  #define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0) | 
|---|
| 8 | 8 |   | 
|---|
| 9 |  | -#define tlb_flush(tlb)							\  | 
|---|
| 10 |  | -{									\  | 
|---|
| 11 |  | -	if (!tlb->fullmm && !tlb->need_flush_all) 			\  | 
|---|
| 12 |  | -		flush_tlb_mm_range(tlb->mm, tlb->start, tlb->end, 0UL);	\  | 
|---|
| 13 |  | -	else								\  | 
|---|
| 14 |  | -		flush_tlb_mm_range(tlb->mm, 0UL, TLB_FLUSH_ALL, 0UL);	\  | 
|---|
| 15 |  | -}  | 
|---|
 | 9 | +#define tlb_flush tlb_flush  | 
|---|
 | 10 | +static inline void tlb_flush(struct mmu_gather *tlb);  | 
|---|
| 16 | 11 |   | 
|---|
| 17 | 12 |  #include <asm-generic/tlb.h> | 
|---|
 | 13 | +  | 
|---|
 | 14 | +static inline void tlb_flush(struct mmu_gather *tlb)  | 
|---|
 | 15 | +{  | 
|---|
 | 16 | +	unsigned long start = 0UL, end = TLB_FLUSH_ALL;  | 
|---|
 | 17 | +	unsigned int stride_shift = tlb_get_unmap_shift(tlb);  | 
|---|
 | 18 | +  | 
|---|
 | 19 | +	if (!tlb->fullmm && !tlb->need_flush_all) {  | 
|---|
 | 20 | +		start = tlb->start;  | 
|---|
 | 21 | +		end = tlb->end;  | 
|---|
 | 22 | +	}  | 
|---|
 | 23 | +  | 
|---|
 | 24 | +	flush_tlb_mm_range(tlb->mm, start, end, stride_shift, tlb->freed_tables);  | 
|---|
 | 25 | +}  | 
|---|
| 18 | 26 |   | 
|---|
| 19 | 27 |  /* | 
|---|
| 20 | 28 |   * While x86 architecture in general requires an IPI to perform TLB | 
|---|
| 21 | 29 |   * shootdown, enablement code for several hypervisors overrides | 
|---|
| 22 | 30 |   * .flush_tlb_others hook in pv_mmu_ops and implements it by issuing | 
|---|
| 23 | 31 |   * a hypercall. To keep software pagetable walkers safe in this case we | 
|---|
| 24 |  | - * switch to RCU based table free (HAVE_RCU_TABLE_FREE). See the comment  | 
|---|
| 25 |  | - * below 'ifdef CONFIG_HAVE_RCU_TABLE_FREE' in include/asm-generic/tlb.h  | 
|---|
 | 32 | + * switch to RCU based table free (MMU_GATHER_RCU_TABLE_FREE). See the comment  | 
|---|
 | 33 | + * below 'ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE' in include/asm-generic/tlb.h  | 
|---|
| 26 | 34 |   * for more details. | 
|---|
| 27 | 35 |   */ | 
|---|
| 28 | 36 |  static inline void __tlb_remove_table(void *table) | 
|---|