| /linux/arch/s390/mm/ |
| H A D | pageattr.c | 171 static int walk_pmd_level(pud_t *pudp, unsigned long addr, unsigned long end, in walk_pmd_level() argument 179 pmdp = pmd_offset(pudp, addr); in walk_pmd_level() 207 int split_pud_page(pud_t *pudp, unsigned long addr) in split_pud_page() argument 217 pmd_addr = pud_pfn(*pudp) << PAGE_SHIFT; in split_pud_page() 218 ro = !!(pud_val(*pudp) & _REGION_ENTRY_PROTECT); in split_pud_page() 219 nx = !!(pud_val(*pudp) & _REGION_ENTRY_NOEXEC); in split_pud_page() 230 pgt_set((unsigned long *)pudp, pud_val(new), addr, CRDTE_DTT_REGION3); in split_pud_page() 236 static void modify_pud_page(pud_t *pudp, unsigned long addr, in modify_pud_page() argument 239 pud_t new = *pudp; in modify_pud_page() 255 pgt_set((unsigned long *)pudp, pud_val(new), addr, CRDTE_DTT_REGION3); in modify_pud_page() [all …]
|
| H A D | pgtable.c | 471 unsigned long addr, pud_t *pudp) in pudp_idte_local() argument 474 __pudp_idte(addr, pudp, IDTE_NODAT | IDTE_GUEST_ASCE, in pudp_idte_local() 477 __pudp_idte(addr, pudp, 0, 0, IDTE_LOCAL); in pudp_idte_local() 481 unsigned long addr, pud_t *pudp) in pudp_idte_global() argument 484 __pudp_idte(addr, pudp, IDTE_NODAT | IDTE_GUEST_ASCE, in pudp_idte_global() 487 __pudp_idte(addr, pudp, 0, 0, IDTE_GLOBAL); in pudp_idte_global() 491 unsigned long addr, pud_t *pudp) in pudp_flush_direct() argument 495 old = *pudp; in pudp_flush_direct() 501 pudp_idte_local(mm, addr, pudp); in pudp_flush_direct() 503 pudp_idte_global(mm, addr, pudp); in pudp_flush_direct() [all …]
|
| /linux/arch/arm64/mm/ |
| H A D | kasan_init.c | 76 static pmd_t *__init kasan_pmd_offset(pud_t *pudp, unsigned long addr, int node, in kasan_pmd_offset() argument 79 if (pud_none(READ_ONCE(*pudp))) { in kasan_pmd_offset() 83 __pud_populate(pudp, pmd_phys, PUD_TYPE_TABLE); in kasan_pmd_offset() 86 return early ? pmd_offset_kimg(pudp, addr) : pmd_offset(pudp, addr); in kasan_pmd_offset() 132 static void __init kasan_pmd_populate(pud_t *pudp, unsigned long addr, in kasan_pmd_populate() argument 136 pmd_t *pmdp = kasan_pmd_offset(pudp, addr, node, early); in kasan_pmd_populate() 148 pud_t *pudp = kasan_pud_offset(p4dp, addr, node, early); in kasan_pud_populate() local 152 kasan_pmd_populate(pudp, addr, next, node, early); in kasan_pud_populate() 153 } while (pudp++, addr = next, addr != end && pud_none(READ_ONCE(*pudp))); in kasan_pud_populate() 260 pud_t *pudp = (pud_t *)__phys_to_kimg(__pgd_to_phys(pgd)); in clone_next_level() local [all …]
|
| H A D | hugetlbpage.c | 87 pud_t *pudp; in find_num_contig() local 92 pudp = pud_offset(p4dp, addr); in find_num_contig() 93 pmdp = pmd_offset(pudp, addr); in find_num_contig() 245 pud_t *pudp; in huge_pte_alloc() local 254 pudp = pud_alloc(mm, p4dp, addr); in huge_pte_alloc() 255 if (!pudp) in huge_pte_alloc() 259 ptep = (pte_t *)pudp; in huge_pte_alloc() 261 pmdp = pmd_alloc(mm, pudp, addr); in huge_pte_alloc() 268 if (want_pmd_share(vma, addr) && pud_none(READ_ONCE(*pudp))) in huge_pte_alloc() 269 ptep = huge_pmd_share(mm, vma, addr, pudp); in huge_pte_alloc() [all …]
|
| /linux/arch/powerpc/mm/kasan/ |
| H A D | init_book3e_64.c | 36 pud_t *pudp; in kasan_map_kernel_page() local 43 pudp = memblock_alloc_or_panic(PUD_TABLE_SIZE, PUD_TABLE_SIZE); in kasan_map_kernel_page() 44 memcpy(pudp, kasan_early_shadow_pud, PUD_TABLE_SIZE); in kasan_map_kernel_page() 45 p4d_populate(&init_mm, p4dp, pudp); in kasan_map_kernel_page() 47 pudp = pud_offset(p4dp, ea); in kasan_map_kernel_page() 48 if (kasan_pmd_table(*pudp)) { in kasan_map_kernel_page() 51 pud_populate(&init_mm, pudp, pmdp); in kasan_map_kernel_page() 53 pmdp = pmd_offset(pudp, ea); in kasan_map_kernel_page()
|
| /linux/arch/powerpc/mm/book3s64/ |
| H A D | pgtable.c | 81 pud_t *pudp, pud_t entry, int dirty) in pudp_set_access_flags() argument 85 assert_spin_locked(pud_lockptr(vma->vm_mm, pudp)); in pudp_set_access_flags() 87 changed = !pud_same(*(pudp), entry); in pudp_set_access_flags() 93 __ptep_set_access_flags(vma, pudp_ptep(pudp), in pudp_set_access_flags() 107 unsigned long address, pud_t *pudp) in pudp_test_and_clear_young() argument 109 return __pudp_test_and_clear_young(vma->vm_mm, address, pudp); in pudp_test_and_clear_young() 134 pud_t *pudp, pud_t pud) in set_pud_at() argument 142 WARN_ON(pte_hw_valid(pud_pte(*pudp))); in set_pud_at() 143 assert_spin_locked(pud_lockptr(mm, pudp)); in set_pud_at() 147 return set_pte_at(mm, addr, pudp_ptep(pudp), pud_pte(pud)); in set_pud_at() [all …]
|
| H A D | radix_pgtable.c | 80 pud_t *pudp; in early_map_kernel_page() local 87 pudp = early_alloc_pgtable(PAGE_SIZE, nid, in early_map_kernel_page() 89 p4d_populate(&init_mm, p4dp, pudp); in early_map_kernel_page() 91 pudp = pud_offset(p4dp, ea); in early_map_kernel_page() 93 ptep = (pte_t *)pudp; in early_map_kernel_page() 96 if (pud_none(*pudp)) { in early_map_kernel_page() 99 pud_populate(&init_mm, pudp, pmdp); in early_map_kernel_page() 101 pmdp = pmd_offset(pudp, ea); in early_map_kernel_page() 132 pud_t *pudp; in __map_kernel_page() local 155 pudp = pud_alloc(&init_mm, p4dp, ea); in __map_kernel_page() [all …]
|
| /linux/arch/x86/include/asm/ |
| H A D | pgtable-3level.h | 53 static inline void native_set_pud(pud_t *pudp, pud_t pud) in native_set_pud() argument 56 pud.p4d.pgd = pti_set_user_pgtbl(&pudp->p4d.pgd, pud.p4d.pgd); in native_set_pud() 58 pxx_xchg64(pud, pudp, native_pud_val(pud)); in native_set_pud() 81 static inline void native_pud_clear(pud_t *pudp) in native_pud_clear() argument 85 static inline void pud_clear(pud_t *pudp) in pud_clear() argument 87 set_pud(pudp, __pud(0)); in pud_clear() 113 static inline pud_t native_pudp_get_and_clear(pud_t *pudp) in native_pudp_get_and_clear() argument 115 return pxx_xchg64(pud, pudp, 0ULL); in native_pudp_get_and_clear()
|
| H A D | pgtable.h | 89 # define set_pud(pudp, pud) native_set_pud(pudp, pud) argument 1205 static inline pud_t native_local_pudp_get_and_clear(pud_t *pudp) in native_local_pudp_get_and_clear() argument 1207 pud_t res = *pudp; in native_local_pudp_get_and_clear() 1209 native_pud_clear(pudp); in native_local_pudp_get_and_clear() 1221 pud_t *pudp, pud_t pud) in set_pud_at() argument 1223 page_table_check_pud_set(mm, pudp, pud); in set_pud_at() 1224 native_set_pud(pudp, pud); in set_pud_at() 1301 unsigned long address, pud_t *pudp, 1308 unsigned long addr, pud_t *pudp); 1328 unsigned long addr, pud_t *pudp) in pudp_huge_get_and_clear() argument [all …]
|
| /linux/arch/riscv/mm/ |
| H A D | kasan_init.c | 84 pud_t *pudp, *p; in kasan_populate_pud() local 92 pudp = pud_offset(p4d, vaddr); in kasan_populate_pud() 97 if (pud_none(pudp_get(pudp)) && IS_ALIGNED(vaddr, PUD_SIZE) && in kasan_populate_pud() 101 set_pud(pudp, pfn_pud(PFN_DOWN(phys_addr), PAGE_KERNEL)); in kasan_populate_pud() 107 kasan_populate_pmd(pudp, vaddr, next); in kasan_populate_pud() 108 } while (pudp++, vaddr = next, vaddr != end); in kasan_populate_pud() 168 pud_t *pudp, *base_pud; in kasan_early_clear_pud() local 172 pudp = (pud_t *)p4dp; in kasan_early_clear_pud() 175 pudp = base_pud + pud_index(vaddr); in kasan_early_clear_pud() 182 pud_clear(pudp); in kasan_early_clear_pud() [all …]
|
| H A D | pgtable.c | 157 pud_t *pudp) in pudp_invalidate() argument 159 VM_WARN_ON_ONCE(!pud_present(*pudp)); in pudp_invalidate() 160 pud_t old = pudp_establish(vma, address, pudp, pud_mkinvalid(*pudp)); in pudp_invalidate()
|
| /linux/mm/ |
| H A D | debug_vm_pgtable.c | 51 pud_t *pudp; member 366 set_pud_at(args->mm, vaddr, args->pudp, pud); in pud_advanced_tests() 368 pudp_set_wrprotect(args->mm, vaddr, args->pudp); in pud_advanced_tests() 369 pud = pudp_get(args->pudp); in pud_advanced_tests() 373 pudp_huge_get_and_clear(args->mm, vaddr, args->pudp); in pud_advanced_tests() 374 pud = pudp_get(args->pudp); in pud_advanced_tests() 380 set_pud_at(args->mm, vaddr, args->pudp, pud); in pud_advanced_tests() 384 pudp_set_access_flags(args->vma, vaddr, args->pudp, pud, 1); in pud_advanced_tests() 385 pud = pudp_get(args->pudp); in pud_advanced_tests() 389 pudp_huge_get_and_clear_full(args->vma, vaddr, args->pudp, 1); in pud_advanced_tests() [all …]
|
| H A D | gup.c | 650 unsigned long addr, pud_t *pudp, in follow_huge_pud() argument 655 pud_t pud = *pudp; in follow_huge_pud() 659 assert_spin_locked(pud_lockptr(mm, pudp)); in follow_huge_pud() 748 unsigned long addr, pud_t *pudp, in follow_huge_pud() argument 899 unsigned long address, pud_t *pudp, in follow_pmd_mask() argument 908 pmd = pmd_offset(pudp, address); in follow_pmd_mask() 947 pud_t *pudp, pud; in follow_pud_mask() local 952 pudp = pud_offset(p4dp, address); in follow_pud_mask() 953 pud = pudp_get(pudp); in follow_pud_mask() 957 ptl = pud_lock(mm, pudp); in follow_pud_mask() [all …]
|
| /linux/arch/loongarch/mm/ |
| H A D | kasan_init.c | 129 static pmd_t *__init kasan_pmd_offset(pud_t *pudp, unsigned long addr, int node, bool early) in kasan_pmd_offset() argument 131 if (__pud_none(early, pudp_get(pudp))) { in kasan_pmd_offset() 136 pud_populate(&init_mm, pudp, (pmd_t *)__va(pmd_phys)); in kasan_pmd_offset() 139 return pmd_offset(pudp, addr); in kasan_pmd_offset() 183 static void __init kasan_pmd_populate(pud_t *pudp, unsigned long addr, in kasan_pmd_populate() argument 187 pmd_t *pmdp = kasan_pmd_offset(pudp, addr, node, early); in kasan_pmd_populate() 199 pud_t *pudp = kasan_pud_offset(p4dp, addr, node, early); in kasan_pud_populate() local 203 kasan_pmd_populate(pudp, addr, next, node, early); in kasan_pud_populate() 204 } while (pudp++, addr = next, addr != end && __pud_none(early, READ_ONCE(*pudp))); in kasan_pud_populate()
|
| /linux/include/trace/events/ |
| H A D | xen.h | 207 TP_PROTO(pud_t *pudp, pud_t pudval), 208 TP_ARGS(pudp, pudval), 210 __field(pud_t *, pudp) 213 TP_fast_assign(__entry->pudp = pudp; 216 __entry->pudp, 242 TP_PROTO(pud_t *pudp, pud_t pudval), 243 TP_ARGS(pudp, pudval), 245 __field(pud_t *, pudp) 248 TP_fast_assign(__entry->pudp = pudp; 251 __entry->pudp,
|
| /linux/arch/x86/mm/ |
| H A D | pgtable.c | 137 void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) in pud_populate() argument 143 set_pud(pudp, __pud(__pa(pmd) | _PAGE_PRESENT)); in pud_populate() 426 pud_t *pudp, pud_t entry, int dirty) in pudp_set_access_flags() argument 428 int changed = !pud_same(*pudp, entry); in pudp_set_access_flags() 433 set_pud(pudp, entry); in pudp_set_access_flags() 474 unsigned long addr, pud_t *pudp) in pudp_test_and_clear_young() argument 478 if (pud_young(*pudp)) in pudp_test_and_clear_young() 480 (unsigned long *)pudp); in pudp_test_and_clear_young() 536 pud_t *pudp) in pudp_invalidate() argument 538 VM_WARN_ON_ONCE(!pud_present(*pudp)); in pudp_invalidate() [all …]
|
| /linux/arch/powerpc/include/asm/book3s/64/ |
| H A D | pgtable.h | 843 static inline void pud_clear(pud_t *pudp) in pud_clear() argument 850 WARN_ON((pud_val(*pudp) & (H_PAGE_HASHPTE | _PAGE_PTE)) == (H_PAGE_HASHPTE | _PAGE_PTE)); in pud_clear() 852 *pudp = __pud(0); in pud_clear() 1085 pud_t *pudp, pud_t pud); 1124 pud_hugepage_update(struct mm_struct *mm, unsigned long addr, pud_t *pudp, in pud_hugepage_update() argument 1128 return radix__pud_hugepage_update(mm, addr, pudp, clr, set); in pud_hugepage_update() 1130 return pud_val(*pudp); in pud_hugepage_update() 1149 unsigned long addr, pud_t *pudp) in __pudp_test_and_clear_young() argument 1153 if ((pud_raw(*pudp) & cpu_to_be64(_PAGE_ACCESSED | H_PAGE_HASHPTE)) == 0) in __pudp_test_and_clear_young() 1155 old = pud_hugepage_update(mm, addr, pudp, _PAGE_ACCESSED, 0); in __pudp_test_and_clear_young() [all …]
|
| /linux/arch/arm/include/asm/ |
| H A D | pgtable-3level.h | 123 #define pud_clear(pudp) \ argument 125 *pudp = __pud(0); \ 126 clean_pmd_entry(pudp); \ 129 #define set_pud(pudp, pud) \ argument 131 *pudp = pud; \ 132 flush_pmd_entry(pudp); \
|
| /linux/arch/arm/mm/ |
| H A D | kasan_init.c | 93 static void __init kasan_pmd_populate(pud_t *pudp, unsigned long addr, in kasan_pmd_populate() argument 97 pmd_t *pmdp = pmd_offset(pudp, addr); in kasan_pmd_populate() 129 pud_t *pudp; in kasan_pgd_populate() local 156 pudp = pud_offset(p4dp, addr); in kasan_pgd_populate() 158 kasan_pmd_populate(pudp, addr, next, early); in kasan_pgd_populate()
|
| /linux/arch/riscv/include/asm/ |
| H A D | pgtable.h | 958 pud_t *pudp, pud_t pud) in set_pud_at() argument 960 page_table_check_pud_set(mm, pudp, pud); in set_pud_at() 961 return __set_pte_at(mm, (pte_t *)pudp, pud_pte(pud)); in set_pud_at() 1084 unsigned long address, pud_t *pudp, in pudp_set_access_flags() argument 1087 return ptep_set_access_flags(vma, address, (pte_t *)pudp, pud_pte(entry), dirty); in pudp_set_access_flags() 1091 unsigned long address, pud_t *pudp) in pudp_test_and_clear_young() argument 1093 return ptep_test_and_clear_young(vma, address, (pte_t *)pudp); in pudp_test_and_clear_young() 1098 unsigned long address, pud_t *pudp) in pudp_huge_get_and_clear() argument 1101 pud_t pud = __pud(xchg(&pudp->pud, 0)); in pudp_huge_get_and_clear() 1103 pud_t pud = *pudp; in pudp_huge_get_and_clear() [all …]
|
| /linux/arch/sparc/mm/ |
| H A D | srmmu.c | 491 pud_t *pudp; in srmmu_mapioaddr() local 499 pudp = pud_offset(p4dp, virt_addr); in srmmu_mapioaddr() 500 pmdp = pmd_offset(pudp, virt_addr); in srmmu_mapioaddr() 530 pud_t *pudp; in srmmu_unmapioaddr() local 537 pudp = pud_offset(p4dp, virt_addr); in srmmu_unmapioaddr() 538 pmdp = pmd_offset(pudp, virt_addr); in srmmu_unmapioaddr() 677 pud_t *pudp; in srmmu_early_allocate_ptable_skeleton() local 684 pudp = pud_offset(p4dp, start); in srmmu_early_allocate_ptable_skeleton() 685 if (pud_none(*__nocache_fix(pudp))) { in srmmu_early_allocate_ptable_skeleton() 691 pud_set(__nocache_fix(pudp), pmdp); in srmmu_early_allocate_ptable_skeleton() [all …]
|
| /linux/arch/powerpc/include/asm/nohash/64/ |
| H A D | pgtable.h | 109 static inline void pud_set(pud_t *pudp, unsigned long val) in pud_set() argument 111 *pudp = __pud(val); in pud_set() 114 static inline void pud_clear(pud_t *pudp) in pud_clear() argument 116 *pudp = __pud(0); in pud_clear()
|
| /linux/include/linux/ |
| H A D | pgtable.h | 317 unsigned long address, pud_t *pudp, 328 unsigned long address, pud_t *pudp, in pudp_set_access_flags() argument 352 static inline pud_t pudp_get(pud_t *pudp) in pudp_get() argument 354 return READ_ONCE(*pudp); in pudp_get() 659 pud_t *pudp) in pudp_huge_get_and_clear() argument 661 pud_t pud = *pudp; in pudp_huge_get_and_clear() 663 pud_clear(pudp); in pudp_huge_get_and_clear() 683 unsigned long address, pud_t *pudp, in pudp_huge_get_and_clear_full() argument 686 return pudp_huge_get_and_clear(vma->vm_mm, address, pudp); in pudp_huge_get_and_clear_full() 893 pud_t *pudp); [all …]
|
| /linux/arch/m68k/include/asm/ |
| H A D | motorola_pgtable.h | 95 static inline void pud_set(pud_t *pudp, pmd_t *pmdp) in pud_set() argument 97 pud_val(*pudp) = _PAGE_TABLE | _PAGE_ACCESSED | __pa(pmdp); in pud_set() 131 #define pud_clear(pudp) ({ pud_val(*pudp) = 0; }) argument
|
| /linux/arch/alpha/include/asm/ |
| H A D | pgtable.h | 182 extern inline void pud_set(pud_t * pudp, pmd_t * pmdp) in pud_set() argument 183 { pud_val(*pudp) = _PAGE_TABLE | ((((unsigned long) pmdp) - PAGE_OFFSET) << (32-PAGE_SHIFT)); } in pud_set() 216 extern inline void pud_clear(pud_t * pudp) { pud_val(*pudp) = 0; } in pud_clear() argument
|