| /linux-6.15/include/asm-generic/ |
| H A D | pgtable-nopud.h | 16 typedef struct { p4d_t p4d; } pud_t; member 28 static inline int p4d_none(p4d_t p4d) { return 0; } in p4d_none() argument 29 static inline int p4d_bad(p4d_t p4d) { return 0; } in p4d_bad() argument 30 static inline int p4d_present(p4d_t p4d) { return 1; } in p4d_present() argument 31 static inline void p4d_clear(p4d_t *p4d) { } in p4d_clear() argument 32 #define pud_ERROR(pud) (p4d_ERROR((pud).p4d)) 34 #define p4d_populate(mm, p4d, pud) do { } while (0) argument 44 return (pud_t *)p4d; in pud_offset() 48 #define pud_val(x) (p4d_val((x).p4d)) 51 #define p4d_page(p4d) (pud_page((pud_t){ p4d })) argument [all …]
|
| /linux-6.15/mm/kasan/ |
| H A D | init.c | 194 p4d_populate(&init_mm, p4d, in zero_p4d_populate() 205 if (p4d_none(*p4d)) { in zero_p4d_populate() 242 p4d_t *p4d; in kasan_populate_early_shadow() local 328 p4d_clear(p4d); in kasan_free_pud() 333 p4d_t *p4d; in kasan_free_p4d() local 337 p4d = p4d_start + i; in kasan_free_p4d() 338 if (!p4d_none(*p4d)) in kasan_free_p4d() 431 if (!p4d_present(*p4d)) in kasan_remove_p4d_table() 437 p4d_clear(p4d); in kasan_remove_p4d_table() 443 kasan_free_pud(pud_offset(p4d, 0), p4d); in kasan_remove_p4d_table() [all …]
|
| /linux-6.15/arch/powerpc/include/asm/nohash/64/ |
| H A D | pgtable-4k.h | 56 #define p4d_none(p4d) (!p4d_val(p4d)) argument 57 #define p4d_bad(p4d) (p4d_val(p4d) == 0) argument 58 #define p4d_present(p4d) (p4d_val(p4d) != 0) argument 62 static inline pud_t *p4d_pgtable(p4d_t p4d) in p4d_pgtable() argument 64 return (pud_t *) (p4d_val(p4d) & ~P4D_MASKED_BITS); in p4d_pgtable() 72 static inline pte_t p4d_pte(p4d_t p4d) in p4d_pte() argument 74 return __pte(p4d_val(p4d)); in p4d_pte() 81 extern struct page *p4d_page(p4d_t p4d);
|
| /linux-6.15/arch/riscv/include/asm/ |
| H A D | pgtable-64.h | 46 unsigned long p4d; member 49 #define p4d_val(x) ((x).p4d) 279 WRITE_ONCE(*p4dp, p4d); in set_p4d() 284 static inline int p4d_none(p4d_t p4d) in p4d_none() argument 287 return (p4d_val(p4d) == 0); in p4d_none() 292 static inline int p4d_present(p4d_t p4d) in p4d_present() argument 295 return (p4d_val(p4d) & _PAGE_PRESENT); in p4d_present() 300 static inline int p4d_bad(p4d_t p4d) in p4d_bad() argument 303 return !p4d_present(p4d); in p4d_bad() 311 set_p4d(p4d, __p4d(0)); in p4d_clear() [all …]
|
| H A D | pgalloc.h | 42 static inline void p4d_populate(struct mm_struct *mm, p4d_t *p4d, pud_t *pud) in p4d_populate() argument 47 set_p4d(p4d, __p4d((pfn << _PAGE_PFN_SHIFT) | _PAGE_TABLE)); in p4d_populate() 51 static inline void p4d_populate_safe(struct mm_struct *mm, p4d_t *p4d, in p4d_populate_safe() argument 57 set_p4d_safe(p4d, in p4d_populate_safe() 62 static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, p4d_t *p4d) in pgd_populate() argument 65 unsigned long pfn = virt_to_pfn(p4d); in pgd_populate() 72 p4d_t *p4d) in pgd_populate_safe() argument 75 unsigned long pfn = virt_to_pfn(p4d); in pgd_populate_safe() 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()
|
| /linux-6.15/arch/x86/mm/ |
| H A D | ident_map.c | 34 pud_t *pud = pud_offset(p4d, 0); in free_pud() 52 p4d_t *p4d = p4d_offset(pgd, 0); in free_p4d() local 56 if (!p4d_present(p4d[i])) in free_p4d() 59 free_pud(info, &p4d[i]); in free_p4d() 63 info->free_pgt_page(p4d, info->context); in free_p4d() 156 if (p4d_present(*p4d)) { in ident_p4d_init() 157 pud = pud_offset(p4d, 0); in ident_p4d_init() 195 p4d_t *p4d; in kernel_ident_mapping_init() local 199 p4d = p4d_offset(pgd, 0); in kernel_ident_mapping_init() 207 if (!p4d) in kernel_ident_mapping_init() [all …]
|
| H A D | init_64.c | 89 DEFINE_ENTRY(p4d, p4d, init) 193 p4d_t *p4d; in sync_global_pgds_l4() local 347 p4d_t *p4d; in populate_extra_pmd() local 371 p4d_t *p4d; in __init_extra_mapping() local 742 p4d_t *p4d; in __kernel_physical_mapping_init() local 1077 p4d_clear(p4d); in free_pud_table() 1213 p4d_t *p4d; in remove_p4d_table() local 1247 p4d_t *p4d; in remove_pagetable() local 1315 p4d_t *p4d; in preallocate_vmalloc_pages() local 1320 if (!p4d) in preallocate_vmalloc_pages() [all …]
|
| H A D | kasan_init_64.c | 108 if (p4d_none(*p4d)) { in kasan_populate_p4d() 114 pud = pud_offset(p4d, addr); in kasan_populate_p4d() 126 p4d_t *p4d; in kasan_populate_pgd() local 134 p4d = p4d_offset(pgd, addr); in kasan_populate_pgd() 193 unsigned long p4d; in early_p4d_offset() local 208 p4d_t *p4d, p4d_entry; in kasan_early_p4d_populate() local 221 if (!p4d_none(*p4d)) in kasan_early_p4d_populate() 226 set_p4d(p4d, p4d_entry); in kasan_early_p4d_populate() 227 } while (p4d++, addr = next, addr != end && p4d_none(*p4d)); in kasan_early_p4d_populate() 248 p4d_t *p4d; in kasan_shallow_populate_p4ds() local [all …]
|
| H A D | pti.c | 202 p4d_t *p4d; in pti_user_pagetable_walk_pmd() local 205 p4d = pti_user_pagetable_walk_p4d(address); in pti_user_pagetable_walk_pmd() 206 if (!p4d) in pti_user_pagetable_walk_pmd() 209 BUILD_BUG_ON(p4d_leaf(*p4d) != 0); in pti_user_pagetable_walk_pmd() 210 if (p4d_none(*p4d)) { in pti_user_pagetable_walk_pmd() 215 set_p4d(p4d, __p4d(_KERNPG_TABLE | __pa(new_pud_page))); in pti_user_pagetable_walk_pmd() 218 pud = pud_offset(p4d, address); in pti_user_pagetable_walk_pmd() 321 p4d_t *p4d; in pti_clone_pgtable() local 331 p4d = p4d_offset(pgd, addr); in pti_clone_pgtable() 332 if (WARN_ON(p4d_none(*p4d))) in pti_clone_pgtable() [all …]
|
| /linux-6.15/arch/x86/include/asm/ |
| H A D | pgalloc.h | 111 static inline void p4d_populate(struct mm_struct *mm, p4d_t *p4d, pud_t *pud) in p4d_populate() argument 114 set_p4d(p4d, __p4d(_PAGE_TABLE | __pa(pud))); in p4d_populate() 120 set_p4d_safe(p4d, __p4d(_PAGE_TABLE | __pa(pud))); in p4d_populate_safe() 132 static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, p4d_t *p4d) in pgd_populate() argument 136 paravirt_alloc_p4d(mm, __pa(p4d) >> PAGE_SHIFT); in pgd_populate() 137 set_pgd(pgd, __pgd(_PAGE_TABLE | __pa(p4d))); in pgd_populate() 144 paravirt_alloc_p4d(mm, __pa(p4d) >> PAGE_SHIFT); in pgd_populate_safe() 145 set_pgd_safe(pgd, __pgd(_PAGE_TABLE | __pa(p4d))); in pgd_populate_safe() 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 …]
|
| H A D | pgtable_types.h | 348 typedef struct { p4dval_t p4d; } p4d_t; member 355 static inline p4dval_t native_p4d_val(p4d_t p4d) in native_p4d_val() argument 357 return p4d.p4d; in native_p4d_val() 367 static inline p4dval_t native_p4d_val(p4d_t p4d) in native_p4d_val() argument 369 return native_pgd_val(p4d.pgd); in native_p4d_val() 395 return native_pgd_val(pud.p4d.pgd); in native_pud_val() 419 return native_pgd_val(pmd.pud.p4d.pgd); in native_pmd_val() 423 static inline p4dval_t p4d_pfn_mask(p4d_t p4d) in p4d_pfn_mask() argument 431 return ~p4d_pfn_mask(p4d); in p4d_flags_mask() 434 static inline p4dval_t p4d_flags(p4d_t p4d) in p4d_flags() argument [all …]
|
| /linux-6.15/arch/sh/mm/ |
| H A D | hugetlbpage.c | 28 p4d_t *p4d; in huge_pte_alloc() local 35 p4d = p4d_alloc(mm, pgd, addr); in huge_pte_alloc() 36 if (p4d) { in huge_pte_alloc() 37 pud = pud_alloc(mm, p4d, addr); in huge_pte_alloc() 53 p4d_t *p4d; in huge_pte_offset() local 60 p4d = p4d_offset(pgd, addr); in huge_pte_offset() 61 if (p4d) { in huge_pte_offset() 62 pud = pud_offset(p4d, addr); in huge_pte_offset()
|
| /linux-6.15/arch/s390/mm/ |
| H A D | vmem.c | 322 pud = pud_offset(p4d, addr); in modify_pud_table() 376 p4d_clear(p4d); in try_free_pud_table() 384 p4d_t *p4d; in modify_p4d_table() local 391 if (p4d_none(*p4d)) in modify_p4d_table() 412 p4d_t *p4d; in try_free_p4d_table() local 417 if (!p4d_none(*p4d)) in try_free_p4d_table() 430 p4d_t *p4d; in modify_pagetable() local 446 if (!p4d) in modify_pagetable() 567 p4d_t *p4d; in vmem_get_alloc_pte() local 577 if (!p4d) in vmem_get_alloc_pte() [all …]
|
| /linux-6.15/arch/mips/include/asm/ |
| H A D | pgtable-64.h | 184 static inline int p4d_none(p4d_t p4d) in p4d_none() argument 186 return p4d_val(p4d) == (unsigned long)invalid_pud_table; in p4d_none() 189 static inline int p4d_bad(p4d_t p4d) in p4d_bad() argument 191 if (unlikely(p4d_val(p4d) & ~PAGE_MASK)) in p4d_bad() 197 static inline int p4d_present(p4d_t p4d) in p4d_present() argument 207 static inline pud_t *p4d_pgtable(p4d_t p4d) in p4d_pgtable() argument 209 return (pud_t *)p4d_val(p4d); in p4d_pgtable() 212 #define p4d_phys(p4d) virt_to_phys((void *)p4d_val(p4d)) argument 213 #define p4d_page(p4d) (pfn_to_page(p4d_phys(p4d) >> PAGE_SHIFT)) argument 217 static inline void set_p4d(p4d_t *p4d, p4d_t p4dval) in set_p4d() argument [all …]
|
| /linux-6.15/arch/mips/mm/ |
| H A D | hugetlbpage.c | 28 p4d_t *p4d; in huge_pte_alloc() local 33 p4d = p4d_alloc(mm, pgd, addr); in huge_pte_alloc() 34 pud = pud_alloc(mm, p4d, addr); in huge_pte_alloc() 45 p4d_t *p4d; in huge_pte_offset() local 51 p4d = p4d_offset(pgd, addr); in huge_pte_offset() 52 if (p4d_present(*p4d)) { in huge_pte_offset() 53 pud = pud_offset(p4d, addr); in huge_pte_offset()
|
| /linux-6.15/arch/arm/mm/ |
| H A D | pgd.c | 143 p4d_t *p4d; in pgd_free() local 155 p4d = p4d_offset(pgd, 0); in pgd_free() 156 if (p4d_none_or_clear_bad(p4d)) in pgd_free() 159 pud = pud_offset(p4d, 0); in pgd_free() 176 p4d_clear(p4d); in pgd_free() 180 p4d_free(mm, p4d); in pgd_free() 191 p4d = p4d_offset(pgd, 0); in pgd_free() 192 if (p4d_none_or_clear_bad(p4d)) in pgd_free() 194 pud = pud_offset(p4d, 0); in pgd_free() 201 p4d_clear(p4d); in pgd_free() [all …]
|
| /linux-6.15/arch/loongarch/mm/ |
| H A D | hugetlbpage.c | 20 p4d_t *p4d; in huge_pte_alloc() local 25 p4d = p4d_alloc(mm, pgd, addr); in huge_pte_alloc() 26 pud = pud_alloc(mm, p4d, addr); in huge_pte_alloc() 37 p4d_t *p4d; in huge_pte_offset() local 43 p4d = p4d_offset(pgd, addr); in huge_pte_offset() 44 if (p4d_present(p4dp_get(p4d))) { in huge_pte_offset() 45 pud = pud_offset(p4d, addr); in huge_pte_offset()
|
| /linux-6.15/arch/sparc/mm/ |
| H A D | hugetlbpage.c | 174 p4d_t *p4d; in huge_pte_alloc() local 179 p4d = p4d_offset(pgd, addr); in huge_pte_alloc() 197 p4d_t *p4d; in huge_pte_offset() local 204 p4d = p4d_offset(pgd, addr); in huge_pte_offset() 205 if (p4d_none(*p4d)) in huge_pte_offset() 207 pud = pud_offset(p4d, addr); in huge_pte_offset() 355 pud = pud_offset(p4d, addr); in hugetlb_free_pud_range() 378 pud = pud_offset(p4d, start); in hugetlb_free_pud_range() 379 p4d_clear(p4d); in hugetlb_free_pud_range() 389 p4d_t *p4d; in hugetlb_free_pgd_range() local [all …]
|
| /linux-6.15/arch/um/include/asm/ |
| H A D | pgtable-4level.h | 69 #define p4d_populate(mm, p4d, pud) \ argument 70 set_p4d(p4d, __p4d(_PAGE_TABLE + __pa(pud))) 89 static inline void p4d_clear (p4d_t *p4d) in p4d_clear() argument 91 set_p4d(p4d, __p4d(_PAGE_NEEDSYNC)); in p4d_clear() 97 #define p4d_page(p4d) phys_to_page(p4d_val(p4d) & PAGE_MASK) argument 98 #define p4d_pgtable(p4d) ((pud_t *) __va(p4d_val(p4d) & PAGE_MASK)) argument
|
| /linux-6.15/arch/x86/power/ |
| H A D | hibernate_64.c | 32 p4d_t *p4d = NULL; in set_up_temporary_text_mapping() local 55 p4d = (p4d_t *)get_safe_page(GFP_ATOMIC); in set_up_temporary_text_mapping() 56 if (!p4d) in set_up_temporary_text_mapping() 72 if (p4d) { in set_up_temporary_text_mapping() 74 pgd_t new_pgd = __pgd(__pa(p4d) | pgprot_val(pgtable_prot)); in set_up_temporary_text_mapping() 76 set_p4d(p4d + p4d_index(restore_jump_address), new_p4d); in set_up_temporary_text_mapping()
|
| /linux-6.15/arch/parisc/mm/ |
| H A D | hugetlbpage.c | 30 p4d_t *p4d; in huge_pte_alloc() local 43 p4d = p4d_offset(pgd, addr); in huge_pte_alloc() 44 pud = pud_alloc(mm, p4d, addr); in huge_pte_alloc() 57 p4d_t *p4d; in huge_pte_offset() local 66 p4d = p4d_offset(pgd, addr); in huge_pte_offset() 67 if (!p4d_none(*p4d)) { in huge_pte_offset() 68 pud = pud_offset(p4d, addr); in huge_pte_offset()
|
| /linux-6.15/arch/um/kernel/ |
| H A D | tlb.c | 115 static inline int update_pud_range(p4d_t *p4d, unsigned long addr, in update_pud_range() argument 123 pud = pud_offset(p4d, addr); in update_pud_range() 142 p4d_t *p4d; in update_p4d_range() local 146 p4d = p4d_offset(pgd, addr); in update_p4d_range() 149 if (!p4d_present(*p4d)) { in update_p4d_range() 150 if (p4d_needsync(*p4d)) { in update_p4d_range() 153 p4d_mkuptodate(*p4d); in update_p4d_range() 156 ret = update_pud_range(p4d, addr, next, ops); in update_p4d_range() 157 } while (p4d++, addr = next, ((addr < end) && !ret)); in update_p4d_range()
|
| /linux-6.15/arch/x86/kernel/ |
| H A D | head64.c | 153 p4dval_t *p4d; in __startup_64() local 188 p4d = (p4dval_t *)&RIP_REL_REF(level4_kernel_pgt); in __startup_64() 189 p4d[MAX_PTRS_PER_P4D - 1] += load_delta; in __startup_64() 214 p4d = &early_pgts[RIP_REL_REF(next_early_pgt)++]->pmd; in __startup_64() 217 pgd[i + 0] = (pgdval_t)p4d + pgtable_flags; in __startup_64() 218 pgd[i + 1] = (pgdval_t)p4d + pgtable_flags; in __startup_64() 221 p4d[(i + 0) % PTRS_PER_P4D] = (pgdval_t)pud + pgtable_flags; in __startup_64() 222 p4d[(i + 1) % PTRS_PER_P4D] = (pgdval_t)pud + pgtable_flags; in __startup_64() 292 p4dval_t p4d, *p4d_p; in __early_make_pgtable() local 324 p4d = *p4d_p; in __early_make_pgtable() [all …]
|
| /linux-6.15/arch/s390/include/asm/ |
| H A D | pgalloc.h | 63 static inline void p4d_free(struct mm_struct *mm, p4d_t *p4d) in p4d_free() argument 68 pagetable_dtor(virt_to_ptdesc(p4d)); in p4d_free() 69 crst_table_free(mm, (unsigned long *) p4d); in p4d_free() 115 static inline void pgd_populate(struct mm_struct *mm, pgd_t *pgd, p4d_t *p4d) in pgd_populate() argument 117 set_pgd(pgd, __pgd(_REGION1_ENTRY | __pa(p4d))); in pgd_populate() 120 static inline void p4d_populate(struct mm_struct *mm, p4d_t *p4d, pud_t *pud) in p4d_populate() argument 122 set_p4d(p4d, __p4d(_REGION2_ENTRY | __pa(pud))); in p4d_populate()
|
| /linux-6.15/arch/powerpc/mm/ |
| H A D | pgtable_64.c | 101 struct page *p4d_page(p4d_t p4d) in p4d_page() argument 103 if (p4d_leaf(p4d)) { in p4d_page() 105 VM_WARN_ON(!p4d_leaf(p4d)); in p4d_page() 106 return pte_page(p4d_pte(p4d)); in p4d_page() 108 return virt_to_page(p4d_pgtable(p4d)); in p4d_page()
|