Lines Matching refs:tlb

61 extern void tlb_table_flush(struct mmu_gather *tlb);
62 extern void tlb_remove_table(struct mmu_gather *tlb, void *table);
116 void arch_tlb_gather_mmu(struct mmu_gather *tlb,
118 void tlb_flush_mmu(struct mmu_gather *tlb);
119 void arch_tlb_finish_mmu(struct mmu_gather *tlb,
121 extern bool __tlb_remove_page_size(struct mmu_gather *tlb, struct page *page,
124 static inline void __tlb_adjust_range(struct mmu_gather *tlb, in __tlb_adjust_range() argument
128 tlb->start = min(tlb->start, address); in __tlb_adjust_range()
129 tlb->end = max(tlb->end, address + range_size); in __tlb_adjust_range()
132 static inline void __tlb_reset_range(struct mmu_gather *tlb) in __tlb_reset_range() argument
134 if (tlb->fullmm) { in __tlb_reset_range()
135 tlb->start = tlb->end = ~0; in __tlb_reset_range()
137 tlb->start = TASK_SIZE; in __tlb_reset_range()
138 tlb->end = 0; in __tlb_reset_range()
142 static inline void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) in tlb_flush_mmu_tlbonly() argument
144 if (!tlb->end) in tlb_flush_mmu_tlbonly()
147 tlb_flush(tlb); in tlb_flush_mmu_tlbonly()
148 mmu_notifier_invalidate_range(tlb->mm, tlb->start, tlb->end); in tlb_flush_mmu_tlbonly()
149 __tlb_reset_range(tlb); in tlb_flush_mmu_tlbonly()
152 static inline void tlb_remove_page_size(struct mmu_gather *tlb, in tlb_remove_page_size() argument
155 if (__tlb_remove_page_size(tlb, page, page_size)) in tlb_remove_page_size()
156 tlb_flush_mmu(tlb); in tlb_remove_page_size()
159 static inline bool __tlb_remove_page(struct mmu_gather *tlb, struct page *page) in __tlb_remove_page() argument
161 return __tlb_remove_page_size(tlb, page, PAGE_SIZE); in __tlb_remove_page()
168 static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page) in tlb_remove_page() argument
170 return tlb_remove_page_size(tlb, page, PAGE_SIZE); in tlb_remove_page()
175 static inline void tlb_remove_check_page_size_change(struct mmu_gather *tlb, in tlb_remove_check_page_size_change() argument
184 tlb->page_size = page_size; in tlb_remove_check_page_size_change()
195 #define tlb_start_vma(tlb, vma) do { } while (0) argument
198 #define __tlb_end_vma(tlb, vma) \ argument
200 if (!tlb->fullmm) \
201 tlb_flush_mmu_tlbonly(tlb); \
209 #define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0) argument
219 #define tlb_remove_tlb_entry(tlb, ptep, address) \ argument
221 __tlb_adjust_range(tlb, address, PAGE_SIZE); \
222 __tlb_remove_tlb_entry(tlb, ptep, address); \
225 #define tlb_remove_huge_tlb_entry(h, tlb, ptep, address) \ argument
227 __tlb_adjust_range(tlb, address, huge_page_size(h)); \
228 __tlb_remove_tlb_entry(tlb, ptep, address); \
236 #define __tlb_remove_pmd_tlb_entry(tlb, pmdp, address) do {} while (0) argument
239 #define tlb_remove_pmd_tlb_entry(tlb, pmdp, address) \ argument
241 __tlb_adjust_range(tlb, address, HPAGE_PMD_SIZE); \
242 __tlb_remove_pmd_tlb_entry(tlb, pmdp, address); \
250 #define __tlb_remove_pud_tlb_entry(tlb, pudp, address) do {} while (0) argument
253 #define tlb_remove_pud_tlb_entry(tlb, pudp, address) \ argument
255 __tlb_adjust_range(tlb, address, HPAGE_PUD_SIZE); \
256 __tlb_remove_pud_tlb_entry(tlb, pudp, address); \
278 #define pte_free_tlb(tlb, ptep, address) \ argument
280 __tlb_adjust_range(tlb, address, PAGE_SIZE); \
281 __pte_free_tlb(tlb, ptep, address); \
286 #define pmd_free_tlb(tlb, pmdp, address) \ argument
288 __tlb_adjust_range(tlb, address, PAGE_SIZE); \
289 __pmd_free_tlb(tlb, pmdp, address); \
295 #define pud_free_tlb(tlb, pudp, address) \ argument
297 __tlb_adjust_range(tlb, address, PAGE_SIZE); \
298 __pud_free_tlb(tlb, pudp, address); \
305 #define p4d_free_tlb(tlb, pudp, address) \ argument
307 __tlb_adjust_range(tlb, address, PAGE_SIZE); \
308 __p4d_free_tlb(tlb, pudp, address); \