/linux/include/asm-generic/ |
A D | tlb.h | 311 tlb->start = min(tlb->start, address); in __tlb_adjust_range() 312 tlb->end = max(tlb->end, address + range_size); in __tlb_adjust_range() 318 tlb->start = tlb->end = ~0; in __tlb_reset_range() 351 if (tlb->end) in tlb_flush() 376 if (tlb->fullmm || tlb->need_flush_all) { in tlb_flush() 385 flush_tlb_range(&vma, tlb->start, tlb->end); in tlb_flush() 422 if (!(tlb->freed_tables || tlb->cleared_ptes || tlb->cleared_pmds || in tlb_flush_mmu_tlbonly() 423 tlb->cleared_puds || tlb->cleared_p4ds)) in tlb_flush_mmu_tlbonly() 427 mmu_notifier_invalidate_range(tlb->mm, tlb->start, tlb->end); in tlb_flush_mmu_tlbonly() 456 if (tlb->page_size && tlb->page_size != page_size) { in tlb_change_page_size() [all …]
|
/linux/mm/ |
A D | mmu_gather.c | 20 batch = tlb->active; in tlb_next_batch() 33 tlb->batch_count++; in tlb_next_batch() 39 tlb->active = batch; in tlb_next_batch() 52 tlb->active = &tlb->local; in tlb_batch_pages_flush() 70 VM_BUG_ON(!tlb->end); in __tlb_remove_page_size() 76 batch = tlb->active; in __tlb_remove_page_size() 228 tlb->batch = NULL; in tlb_table_init() 255 tlb->mm = mm; in __tlb_gather_mmu() 262 tlb->local.max = ARRAY_SIZE(tlb->__pages); in __tlb_gather_mmu() 263 tlb->active = &tlb->local; in __tlb_gather_mmu() [all …]
|
A D | madvise.c | 38 struct mmu_gather *tlb; member 313 struct mmu_gather *tlb = private->tlb; in madvise_cold_or_pageout_pte_range() local 447 tlb->fullmm); in madvise_cold_or_pageout_pte_range() 491 .tlb = tlb, in madvise_cold_page_range() 496 tlb_end_vma(tlb, vma); in madvise_cold_page_range() 504 struct mmu_gather tlb; in madvise_cold() local 513 tlb_finish_mmu(&tlb); in madvise_cold() 524 .tlb = tlb, in madvise_pageout_page_range() 566 tlb_finish_mmu(&tlb); in madvise_pageout() 681 tlb->fullmm); in madvise_free_pte_range() [all …]
|
/linux/arch/s390/include/asm/ |
A D | tlb.h | 68 tlb->freed_tables = 1; in pte_free_tlb() 69 tlb->cleared_pmds = 1; in pte_free_tlb() 88 if (mm_pmd_folded(tlb->mm)) in pmd_free_tlb() 93 tlb->freed_tables = 1; in pmd_free_tlb() 94 tlb->cleared_puds = 1; in pmd_free_tlb() 95 tlb_remove_table(tlb, pmd); in pmd_free_tlb() 108 if (mm_p4d_folded(tlb->mm)) in p4d_free_tlb() 112 tlb->freed_tables = 1; in p4d_free_tlb() 113 tlb_remove_table(tlb, p4d); in p4d_free_tlb() 129 tlb->freed_tables = 1; in pud_free_tlb() [all …]
|
/linux/arch/arm64/include/asm/ |
A D | tlb.h | 32 if (tlb->freed_tables) in tlb_get_level() 35 if (tlb->cleared_ptes && !(tlb->cleared_pmds || in tlb_get_level() 36 tlb->cleared_puds || in tlb_get_level() 37 tlb->cleared_p4ds)) in tlb_get_level() 40 if (tlb->cleared_pmds && !(tlb->cleared_ptes || in tlb_get_level() 42 tlb->cleared_p4ds)) in tlb_get_level() 45 if (tlb->cleared_puds && !(tlb->cleared_ptes || in tlb_get_level() 47 tlb->cleared_p4ds)) in tlb_get_level() 65 if (tlb->fullmm) { in tlb_flush() 67 flush_tlb_mm(tlb->mm); in tlb_flush() [all …]
|
/linux/arch/x86/include/asm/ |
A D | tlb.h | 5 #define tlb_start_vma(tlb, vma) do { } while (0) argument 6 #define tlb_end_vma(tlb, vma) do { } while (0) argument 9 static inline void tlb_flush(struct mmu_gather *tlb); 13 static inline void tlb_flush(struct mmu_gather *tlb) in tlb_flush() argument 16 unsigned int stride_shift = tlb_get_unmap_shift(tlb); in tlb_flush() 18 if (!tlb->fullmm && !tlb->need_flush_all) { in tlb_flush() 19 start = tlb->start; in tlb_flush() 20 end = tlb->end; in tlb_flush() 23 flush_tlb_mm_range(tlb->mm, start, end, stride_shift, tlb->freed_tables); in tlb_flush()
|
A D | pgalloc.h | 56 extern void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte); 61 ___pte_free_tlb(tlb, pte); in __pte_free_tlb() 88 extern void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd); 90 static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd, in __pmd_free_tlb() argument 93 ___pmd_free_tlb(tlb, pmd); in __pmd_free_tlb() 125 extern void ___pud_free_tlb(struct mmu_gather *tlb, pud_t *pud); 127 static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, in __pud_free_tlb() argument 130 ___pud_free_tlb(tlb, pud); in __pud_free_tlb() 168 extern void ___p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d); 170 static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d, in __p4d_free_tlb() argument [all …]
|
/linux/arch/sh/mm/ |
A D | Makefile | 30 debugfs-$(CONFIG_CPU_SH4) += tlb-debugfs.o 31 tlb-$(CONFIG_CPU_SH3) := tlb-sh3.o 32 tlb-$(CONFIG_CPU_SH4) := tlb-sh4.o tlb-urb.o 33 tlb-$(CONFIG_CPU_HAS_PTEAEX) := tlb-pteaex.o tlb-urb.o 34 obj-y += $(tlb-y)
|
/linux/arch/powerpc/include/asm/nohash/ |
A D | pgalloc.h | 8 extern void tlb_remove_table(struct mmu_gather *tlb, void *table); 10 extern void tlb_flush_pgtable(struct mmu_gather *tlb, unsigned long address); 13 static inline void tlb_flush_pgtable(struct mmu_gather *tlb, in tlb_flush_pgtable() argument 49 static inline void pgtable_free_tlb(struct mmu_gather *tlb, void *table, int shift) in pgtable_free_tlb() argument 55 tlb_remove_table(tlb, (void *)pgf); in pgtable_free_tlb() 66 static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table, in __pte_free_tlb() argument 69 tlb_flush_pgtable(tlb, address); in __pte_free_tlb() 70 pgtable_free_tlb(tlb, table, 0); in __pte_free_tlb()
|
/linux/arch/riscv/boot/dts/microchip/ |
A D | microchip-mpfs.dtsi | 43 d-tlb-sets = <1>; 44 d-tlb-size = <32>; 49 i-tlb-sets = <1>; 50 i-tlb-size = <32>; 54 tlb-split; 70 d-tlb-sets = <1>; 76 i-tlb-sets = <1>; 81 tlb-split; 97 d-tlb-sets = <1>; 108 tlb-split; [all …]
|
/linux/arch/arm/include/asm/ |
A D | tlb.h | 23 #define tlb_flush(tlb) ((void) tlb) argument 40 __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, unsigned long addr) in __pte_free_tlb() argument 50 __tlb_adjust_range(tlb, addr - PAGE_SIZE, 2 * PAGE_SIZE); in __pte_free_tlb() 53 tlb_remove_table(tlb, pte); in __pte_free_tlb() 57 __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp, unsigned long addr) in __pmd_free_tlb() argument 63 tlb_remove_table(tlb, page); in __pmd_free_tlb()
|
/linux/arch/powerpc/mm/ |
A D | hugetlbpage.c | 280 if (atomic_read(&tlb->mm->mm_users) < 2 || in hugepd_free() 281 mm_is_thread_local(tlb->mm)) { in hugepd_free() 340 hugepd_free(tlb, hugepte); in free_hugepd_range() 342 pgtable_free_tlb(tlb, hugepte, in free_hugepd_range() 356 pte_free_tlb(tlb, token, addr); in hugetlb_free_pte_range() 357 mm_dec_nr_ptes(tlb->mm); in hugetlb_free_pte_range() 407 pmd_free_tlb(tlb, pmd, start & PUD_MASK); in hugetlb_free_pmd_range() 408 mm_dec_nr_pmds(tlb->mm); in hugetlb_free_pmd_range() 450 pud_free_tlb(tlb, pud, start & PGDIR_MASK); in hugetlb_free_pud_range() 451 mm_dec_nr_puds(tlb->mm); in hugetlb_free_pud_range() [all …]
|
/linux/arch/riscv/boot/dts/sifive/ |
A D | fu540-c000.dtsi | 45 d-tlb-sets = <1>; 46 d-tlb-size = <32>; 51 i-tlb-sets = <1>; 52 i-tlb-size = <32>; 56 tlb-split; 69 d-tlb-sets = <1>; 75 i-tlb-sets = <1>; 80 tlb-split; 93 d-tlb-sets = <1>; 104 tlb-split; [all …]
|
A D | fu740-c000.dtsi | 46 d-tlb-sets = <1>; 47 d-tlb-size = <40>; 52 i-tlb-sets = <1>; 53 i-tlb-size = <40>; 58 tlb-split; 70 d-tlb-sets = <1>; 76 i-tlb-sets = <1>; 82 tlb-split; 94 d-tlb-sets = <1>; 106 tlb-split; [all …]
|
/linux/arch/sparc/include/asm/ |
A D | pgalloc_64.h | 78 static inline void pgtable_free_tlb(struct mmu_gather *tlb, void *table, bool is_page) in pgtable_free_tlb() argument 83 tlb_remove_table(tlb, (void *)pgf); in pgtable_free_tlb() 96 static inline void pgtable_free_tlb(struct mmu_gather *tlb, void *table, bool is_page) in pgtable_free_tlb() argument 102 static inline void __pte_free_tlb(struct mmu_gather *tlb, pte_t *pte, in __pte_free_tlb() argument 105 pgtable_free_tlb(tlb, pte, true); in __pte_free_tlb() 108 #define __pmd_free_tlb(tlb, pmd, addr) \ argument 109 pgtable_free_tlb(tlb, pmd, false) 111 #define __pud_free_tlb(tlb, pud, addr) \ argument 112 pgtable_free_tlb(tlb, pud, false)
|
/linux/arch/csky/include/asm/ |
A D | tlb.h | 8 #define tlb_start_vma(tlb, vma) \ argument 10 if (!(tlb)->fullmm) \ 14 #define tlb_end_vma(tlb, vma) \ argument 16 if (!(tlb)->fullmm) \ 20 #define tlb_flush(tlb) flush_tlb_mm((tlb)->mm) argument
|
/linux/include/linux/ |
A D | io-pgtable.h | 93 const struct iommu_flush_ops *tlb; member 218 if (iop->cfg.tlb && iop->cfg.tlb->tlb_flush_all) in io_pgtable_tlb_flush_all() 219 iop->cfg.tlb->tlb_flush_all(iop->cookie); in io_pgtable_tlb_flush_all() 226 if (iop->cfg.tlb && iop->cfg.tlb->tlb_flush_walk) in io_pgtable_tlb_flush_walk() 227 iop->cfg.tlb->tlb_flush_walk(iova, size, granule, iop->cookie); in io_pgtable_tlb_flush_walk() 235 if (iop->cfg.tlb && iop->cfg.tlb->tlb_add_page) in io_pgtable_tlb_add_page() 236 iop->cfg.tlb->tlb_add_page(gather, iova, granule, iop->cookie); in io_pgtable_tlb_add_page()
|
/linux/arch/ia64/include/asm/ |
A D | pgalloc.h | 39 #define __pud_free_tlb(tlb, pud, address) pud_free((tlb)->mm, pud) argument 48 #define __pmd_free_tlb(tlb, pmd, address) pmd_free((tlb)->mm, pmd) argument 62 #define __pte_free_tlb(tlb, pte, address) pte_free((tlb)->mm, pte) argument
|
/linux/arch/arc/include/asm/ |
A D | pgalloc.h | 80 #define __pud_free_tlb(tlb, pmd, addr) pud_free((tlb)->mm, pmd) argument 91 #define __pmd_free_tlb(tlb, pmd, addr) pmd_free((tlb)->mm, pmd) argument 95 #define __pte_free_tlb(tlb, pte, addr) pte_free((tlb)->mm, pte) argument
|
/linux/arch/mips/include/asm/ |
A D | pgalloc.h | 51 #define __pte_free_tlb(tlb,pte,address) \ argument 54 tlb_remove_page((tlb), pte); \ 78 #define __pmd_free_tlb(tlb, x, addr) pmd_free((tlb)->mm, x) argument 99 #define __pud_free_tlb(tlb, x, addr) pud_free((tlb)->mm, x) argument
|
/linux/arch/powerpc/include/asm/ |
A D | tlb.h | 22 #define tlb_start_vma(tlb, vma) do { } while (0) argument 23 #define tlb_end_vma(tlb, vma) do { } while (0) argument 27 extern void tlb_flush(struct mmu_gather *tlb); 43 static inline void __tlb_remove_tlb_entry(struct mmu_gather *tlb, pte_t *ptep, in __tlb_remove_tlb_entry() argument 48 flush_hash_entry(tlb->mm, ptep, address); in __tlb_remove_tlb_entry()
|
/linux/arch/powerpc/include/asm/book3s/64/ |
A D | pgalloc.h | 21 extern void pgtable_free_tlb(struct mmu_gather *tlb, void *table, int shift); 134 static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, in __pud_free_tlb() argument 137 pgtable_free_tlb(tlb, pud, PUD_INDEX); in __pud_free_tlb() 150 static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd, in __pmd_free_tlb() argument 153 return pgtable_free_tlb(tlb, pmd, PMD_INDEX); in __pmd_free_tlb() 168 static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table, in __pte_free_tlb() argument 171 pgtable_free_tlb(tlb, table, PTE_INDEX); in __pte_free_tlb()
|
/linux/Documentation/devicetree/bindings/nios2/ |
A D | nios2.txt | 23 - altr,tlb-num-ways: Specifies the number of set-associativity ways in the TLB. 24 - altr,tlb-num-entries: Specifies the number of entries in the TLB. 25 - altr,tlb-ptr-sz: Specifies size of TLB pointer. 30 - altr,fast-tlb-miss-addr: Specifies CPU fast TLB miss exception address 52 altr,tlb-num-ways = <16>; 53 altr,tlb-num-entries = <128>; 54 altr,tlb-ptr-sz = <7>; 58 altr,fast-tlb-miss-addr = <0xc7fff400>;
|
/linux/arch/sparc/mm/ |
A D | hugetlbpage.c | 421 pte_free_tlb(tlb, token, addr); in hugetlb_free_pte_range() 422 mm_dec_nr_ptes(tlb->mm); in hugetlb_free_pte_range() 442 hugetlb_free_pte_range(tlb, pmd, addr); in hugetlb_free_pmd_range() 458 pmd_free_tlb(tlb, pmd, start); in hugetlb_free_pmd_range() 459 mm_dec_nr_pmds(tlb->mm); in hugetlb_free_pmd_range() 479 hugetlb_free_pmd_range(tlb, pud, addr, next, floor, in hugetlb_free_pud_range() 496 pud_free_tlb(tlb, pud, start); in hugetlb_free_pud_range() 497 mm_dec_nr_puds(tlb->mm); in hugetlb_free_pud_range() 500 void hugetlb_free_pgd_range(struct mmu_gather *tlb, in hugetlb_free_pgd_range() argument 524 pgd = pgd_offset(tlb->mm, addr); in hugetlb_free_pgd_range() [all …]
|
/linux/arch/alpha/include/asm/ |
A D | tlb.h | 7 #define __pte_free_tlb(tlb, pte, address) pte_free((tlb)->mm, pte) argument 8 #define __pmd_free_tlb(tlb, pmd, address) pmd_free((tlb)->mm, pmd) argument
|