| /linux-6.15/include/asm-generic/ |
| H A D | tlb.h | 381 tlb->start = min(tlb->start, address); in __tlb_adjust_range() 382 tlb->end = max(tlb->end, address + range_size); in __tlb_adjust_range() 388 tlb->start = tlb->end = ~0; in __tlb_reset_range() 391 tlb->end = 0; in __tlb_reset_range() 421 if (tlb->end) in tlb_flush() 435 if (tlb->fullmm || tlb->need_flush_all) { in tlb_flush() 444 flush_tlb_range(&vma, tlb->start, tlb->end); in tlb_flush() 476 if (!(tlb->freed_tables || tlb->cleared_ptes || tlb->cleared_pmds || in tlb_flush_mmu_tlbonly() 477 tlb->cleared_puds || tlb->cleared_p4ds)) in tlb_flush_mmu_tlbonly() 505 if (tlb->page_size && tlb->page_size != page_size) { in tlb_change_page_size() [all …]
|
| /linux-6.15/mm/ |
| H A D | mmu_gather.c | 23 if (tlb->delayed_rmap && tlb->active != &tlb->local) in tlb_next_batch() 26 batch = tlb->active; in tlb_next_batch() 39 tlb->batch_count++; in tlb_next_batch() 45 tlb->active = batch; in tlb_next_batch() 88 if (tlb->active != &tlb->local) in tlb_flush_rmaps() 150 tlb->active = &tlb->local; in tlb_batch_pages_flush() 383 tlb->batch = NULL; in tlb_table_init() 410 tlb->mm = mm; in __tlb_gather_mmu() 417 tlb->local.max = ARRAY_SIZE(tlb->__pages); in __tlb_gather_mmu() 418 tlb->active = &tlb->local; in __tlb_gather_mmu() [all …]
|
| H A D | mprotect.c | 86 static long change_pte_range(struct mmu_gather *tlb, in change_pte_range() argument 98 tlb_change_page_size(tlb, PAGE_SIZE); in change_pte_range() 197 tlb_flush_pte_range(tlb, addr, PAGE_SIZE); in change_pte_range() 394 ret = change_huge_pmd(tlb, vma, pmd, in change_pmd_range() 461 ret = change_huge_pud(tlb, vma, pudp, in change_pud_range() 516 tlb_start_vma(tlb, vma); in change_protection_range() 530 tlb_end_vma(tlb, vma); in change_protection_range() 535 long change_protection(struct mmu_gather *tlb, in change_protection() argument 712 struct mmu_gather tlb; in do_mprotect_pkey() local 773 tlb_gather_mmu(&tlb, current->mm); in do_mprotect_pkey() [all …]
|
| /linux-6.15/arch/arm64/include/asm/ |
| H A D | tlb.h | 27 if (tlb->freed_tables) in tlb_get_level() 30 if (tlb->cleared_ptes && !(tlb->cleared_pmds || in tlb_get_level() 31 tlb->cleared_puds || in tlb_get_level() 32 tlb->cleared_p4ds)) in tlb_get_level() 35 if (tlb->cleared_pmds && !(tlb->cleared_ptes || in tlb_get_level() 37 tlb->cleared_p4ds)) in tlb_get_level() 40 if (tlb->cleared_puds && !(tlb->cleared_ptes || in tlb_get_level() 42 tlb->cleared_p4ds)) in tlb_get_level() 45 if (tlb->cleared_p4ds && !(tlb->cleared_ptes || in tlb_get_level() 65 if (tlb->fullmm) { in tlb_flush() [all …]
|
| /linux-6.15/arch/s390/include/asm/ |
| H A D | tlb.h | 85 tlb->freed_tables = 1; in pte_free_tlb() 86 tlb->cleared_pmds = 1; in pte_free_tlb() 87 if (mm_has_pgste(tlb->mm)) in pte_free_tlb() 102 if (mm_pmd_folded(tlb->mm)) in pmd_free_tlb() 106 tlb->freed_tables = 1; in pmd_free_tlb() 107 tlb->cleared_puds = 1; in pmd_free_tlb() 121 if (mm_p4d_folded(tlb->mm)) in p4d_free_tlb() 125 tlb->freed_tables = 1; in p4d_free_tlb() 139 if (mm_pud_folded(tlb->mm)) in pud_free_tlb() 143 tlb->freed_tables = 1; in pud_free_tlb() [all …]
|
| /linux-6.15/arch/riscv/include/asm/ |
| H A D | tlb.h | 11 static void tlb_flush(struct mmu_gather *tlb); 16 static inline void tlb_flush(struct mmu_gather *tlb) in tlb_flush() argument 19 if (tlb->fullmm || tlb->need_flush_all || tlb->freed_tables) in tlb_flush() 20 flush_tlb_mm(tlb->mm); in tlb_flush() 22 flush_tlb_mm_range(tlb->mm, tlb->start, tlb->end, in tlb_flush() 23 tlb_get_unmap_size(tlb)); in tlb_flush()
|
| H A D | pgalloc.h | 89 static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, in __pud_free_tlb() argument 93 tlb_remove_ptdesc(tlb, virt_to_ptdesc(pud)); in __pud_free_tlb() 96 static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d, in __p4d_free_tlb() argument 100 tlb_remove_ptdesc(tlb, virt_to_ptdesc(p4d)); in __p4d_free_tlb() 125 static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd, in __pmd_free_tlb() argument 128 tlb_remove_ptdesc(tlb, virt_to_ptdesc(pmd)); in __pmd_free_tlb() 133 static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, in __pte_free_tlb() argument 136 tlb_remove_ptdesc(tlb, page_ptdesc(pte)); in __pte_free_tlb()
|
| /linux-6.15/arch/sh/mm/ |
| H 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-6.15/arch/arm/include/asm/ |
| H A D | tlb.h | 23 #define tlb_flush(tlb) ((void) tlb) argument 33 __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, unsigned long addr) in __pte_free_tlb() argument 43 __tlb_adjust_range(tlb, addr - PAGE_SIZE, 2 * PAGE_SIZE); in __pte_free_tlb() 46 tlb_remove_ptdesc(tlb, ptdesc); in __pte_free_tlb() 50 __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp, unsigned long addr) in __pmd_free_tlb() argument 55 tlb_remove_ptdesc(tlb, ptdesc); in __pmd_free_tlb()
|
| /linux-6.15/arch/powerpc/include/asm/nohash/ |
| H 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 53 static inline void pgtable_free_tlb(struct mmu_gather *tlb, void *table, int shift) in pgtable_free_tlb() argument 59 tlb_remove_table(tlb, (void *)pgf); in pgtable_free_tlb() 70 static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table, in __pte_free_tlb() argument 73 tlb_flush_pgtable(tlb, address); in __pte_free_tlb() 74 pgtable_free_tlb(tlb, table, 0); in __pte_free_tlb()
|
| /linux-6.15/arch/x86/include/asm/ |
| H A D | tlb.h | 6 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()
|
| H A D | pgalloc.h | 54 extern void ___pte_free_tlb(struct mmu_gather *tlb, struct page *pte); 59 ___pte_free_tlb(tlb, pte); in __pte_free_tlb() 86 extern void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd); 88 static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd, in __pmd_free_tlb() argument 91 ___pmd_free_tlb(tlb, pmd); in __pmd_free_tlb() 123 extern void ___pud_free_tlb(struct mmu_gather *tlb, pud_t *pud); 125 static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, in __pud_free_tlb() argument 128 ___pud_free_tlb(tlb, pud); in __pud_free_tlb() 148 extern void ___p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d); 150 static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d, in __p4d_free_tlb() argument [all …]
|
| /linux-6.15/arch/sparc/include/asm/ |
| H A D | pgalloc_64.h | 82 static inline void pgtable_free_tlb(struct mmu_gather *tlb, void *table, bool is_page) in pgtable_free_tlb() argument 87 tlb_remove_table(tlb, (void *)pgf); in pgtable_free_tlb() 100 static inline void pgtable_free_tlb(struct mmu_gather *tlb, void *table, bool is_page) in pgtable_free_tlb() argument 106 static inline void __pte_free_tlb(struct mmu_gather *tlb, pte_t *pte, in __pte_free_tlb() argument 109 pgtable_free_tlb(tlb, pte, true); in __pte_free_tlb() 112 #define __pmd_free_tlb(tlb, pmd, addr) \ argument 113 pgtable_free_tlb(tlb, pmd, false) 115 #define __pud_free_tlb(tlb, pud, addr) \ argument 116 pgtable_free_tlb(tlb, pud, false)
|
| /linux-6.15/arch/um/include/asm/ |
| H A D | pgalloc.h | 28 #define __pte_free_tlb(tlb, pte, address) \ argument 29 tlb_remove_ptdesc((tlb), page_ptdesc(pte)) 33 #define __pmd_free_tlb(tlb, pmd, address) \ argument 34 tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd)) 38 #define __pud_free_tlb(tlb, pud, address) \ argument 39 tlb_remove_ptdesc((tlb), virt_to_ptdesc(pud))
|
| /linux-6.15/include/linux/ |
| H A D | io-pgtable.h | 105 const struct iommu_flush_ops *tlb; member 267 if (iop->cfg.tlb && iop->cfg.tlb->tlb_flush_all) in io_pgtable_tlb_flush_all() 268 iop->cfg.tlb->tlb_flush_all(iop->cookie); in io_pgtable_tlb_flush_all() 275 if (iop->cfg.tlb && iop->cfg.tlb->tlb_flush_walk) in io_pgtable_tlb_flush_walk() 276 iop->cfg.tlb->tlb_flush_walk(iova, size, granule, iop->cookie); in io_pgtable_tlb_flush_walk() 284 if (iop->cfg.tlb && iop->cfg.tlb->tlb_add_page) in io_pgtable_tlb_add_page() 285 iop->cfg.tlb->tlb_add_page(gather, iova, granule, iop->cookie); in io_pgtable_tlb_add_page()
|
| /linux-6.15/arch/loongarch/include/asm/ |
| H A D | tlb.h | 135 static void tlb_flush(struct mmu_gather *tlb); 140 static inline void tlb_flush(struct mmu_gather *tlb) in tlb_flush() argument 144 vma.vm_mm = tlb->mm; in tlb_flush() 146 if (tlb->fullmm) { in tlb_flush() 147 flush_tlb_mm(tlb->mm); in tlb_flush() 151 flush_tlb_range(&vma, tlb->start, tlb->end); in tlb_flush()
|
| H A D | pgalloc.h | 58 #define __pte_free_tlb(tlb, pte, address) \ argument 59 tlb_remove_ptdesc((tlb), page_ptdesc(pte)) 82 #define __pmd_free_tlb(tlb, x, addr) pmd_free((tlb)->mm, x) argument 102 #define __pud_free_tlb(tlb, x, addr) pud_free((tlb)->mm, x) argument
|
| /linux-6.15/arch/arc/include/asm/ |
| H A D | pgalloc.h | 75 #define __pud_free_tlb(tlb, pmd, addr) pud_free((tlb)->mm, pmd) argument 86 #define __pmd_free_tlb(tlb, pmd, addr) pmd_free((tlb)->mm, pmd) argument 90 #define __pte_free_tlb(tlb, pte, addr) pte_free((tlb)->mm, pte) argument
|
| /linux-6.15/arch/riscv/boot/dts/sifive/ |
| H A D | fu540-c000.dtsi | 48 d-tlb-sets = <1>; 49 d-tlb-size = <32>; 54 i-tlb-sets = <1>; 55 i-tlb-size = <32>; 62 tlb-split; 75 d-tlb-sets = <1>; 81 i-tlb-sets = <1>; 89 tlb-split; 102 d-tlb-sets = <1>; 116 tlb-split; [all …]
|
| H A D | fu740-c000.dtsi | 49 d-tlb-sets = <1>; 50 d-tlb-size = <40>; 55 i-tlb-sets = <1>; 56 i-tlb-size = <40>; 64 tlb-split; 76 d-tlb-sets = <1>; 82 i-tlb-sets = <1>; 91 tlb-split; 103 d-tlb-sets = <1>; 118 tlb-split; [all …]
|
| /linux-6.15/arch/sparc/mm/ |
| H A D | hugetlbpage.c | 305 pte_free_tlb(tlb, token, addr); in hugetlb_free_pte_range() 306 mm_dec_nr_ptes(tlb->mm); in hugetlb_free_pte_range() 326 hugetlb_free_pte_range(tlb, pmd, addr); in hugetlb_free_pmd_range() 342 pmd_free_tlb(tlb, pmd, start); in hugetlb_free_pmd_range() 343 mm_dec_nr_pmds(tlb->mm); in hugetlb_free_pmd_range() 363 hugetlb_free_pmd_range(tlb, pud, addr, next, floor, in hugetlb_free_pud_range() 380 pud_free_tlb(tlb, pud, start); in hugetlb_free_pud_range() 381 mm_dec_nr_puds(tlb->mm); in hugetlb_free_pud_range() 384 void hugetlb_free_pgd_range(struct mmu_gather *tlb, in hugetlb_free_pgd_range() argument 408 pgd = pgd_offset(tlb->mm, addr); in hugetlb_free_pgd_range() [all …]
|
| /linux-6.15/arch/mips/include/asm/ |
| H A D | pgalloc.h | 51 #define __pte_free_tlb(tlb, pte, address) \ argument 52 tlb_remove_ptdesc((tlb), page_ptdesc(pte)) 75 #define __pmd_free_tlb(tlb, x, addr) pmd_free((tlb)->mm, x) argument 101 #define __pud_free_tlb(tlb, x, addr) pud_free((tlb)->mm, x) argument
|
| /linux-6.15/arch/powerpc/boot/dts/ |
| H A D | microwatt.dts | 122 i-tlb-sets = <1>; 127 i-tlb-size = <64>; 132 tlb-size = <0>; 133 tlb-sets = <0>; 135 d-tlb-size = <128>; 136 d-tlb-sets = <2>; 152 i-tlb-sets = <1>; 157 i-tlb-size = <64>; 162 tlb-size = <0>; 163 tlb-sets = <0>; [all …]
|
| /linux-6.15/arch/alpha/include/asm/ |
| H 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
|
| /linux-6.15/arch/parisc/include/asm/ |
| H A D | tlb.h | 8 #define __pmd_free_tlb(tlb, pmd, addr) pmd_free((tlb)->mm, pmd) argument 10 #define __pte_free_tlb(tlb, pte, addr) pte_free((tlb)->mm, pte) argument
|