/linux-master/include/asm-generic/ |
H A D | pgalloc.h | 21 struct ptdesc *ptdesc = pagetable_alloc(GFP_PGTABLE_KERNEL & local 24 if (!ptdesc) 26 return ptdesc_address(ptdesc); 57 * Allocate memory for a page table and ptdesc and runs pagetable_pte_ctor(). 62 * Return: `struct page` referencing the ptdesc or %NULL on error 66 struct ptdesc *ptdesc; local 68 ptdesc = pagetable_alloc(gfp, 0); 69 if (!ptdesc) 106 struct ptdesc *ptdesc = page_ptdesc(pte_page); local 129 struct ptdesc *ptdesc; local 148 struct ptdesc *ptdesc = virt_to_ptdesc(pmd); local 163 struct ptdesc *ptdesc; local 195 struct ptdesc *ptdesc = virt_to_ptdesc(pud); local [all...] |
H A D | tlb.h | 497 static inline void tlb_remove_page_ptdesc(struct mmu_gather *tlb, struct ptdesc *pt)
|
/linux-master/arch/powerpc/mm/ |
H A D | pgtable-frag.c | 21 struct ptdesc *ptdesc; local 23 ptdesc = virt_to_ptdesc(pte_frag); 27 if (atomic_sub_and_test(PTE_FRAG_NR - count, &ptdesc->pt_frag_refcount)) { 28 pagetable_pte_dtor(ptdesc); 29 pagetable_free(ptdesc); 58 struct ptdesc *ptdesc; local 61 ptdesc = pagetable_alloc(PGALLOC_GFP | __GFP_ACCOUNT, 0); 62 if (!ptdesc) 111 struct ptdesc *ptdesc; local 120 struct ptdesc *ptdesc = virt_to_ptdesc(table); local [all...] |
/linux-master/arch/m68k/include/asm/ |
H A D | mcf_pgalloc.h | 17 struct ptdesc *ptdesc = pagetable_alloc((GFP_DMA | __GFP_ZERO) & local 20 if (!ptdesc) 23 return ptdesc_address(ptdesc); 38 struct ptdesc *ptdesc = virt_to_ptdesc(pgtable); local 40 pagetable_pte_dtor(ptdesc); 41 pagetable_free(ptdesc); 46 struct ptdesc *ptdesc local 62 struct ptdesc *ptdesc = virt_to_ptdesc(pgtable); local 82 struct ptdesc *ptdesc = pagetable_alloc((GFP_DMA | __GFP_NOWARN) & local [all...] |
/linux-master/arch/arm/include/asm/ |
H A D | tlb.h | 42 struct ptdesc *ptdesc = page_ptdesc(pte); local 44 pagetable_pte_dtor(ptdesc); 55 tlb_remove_ptdesc(tlb, ptdesc); 62 struct ptdesc *ptdesc = virt_to_ptdesc(pmdp); local 64 pagetable_pmd_dtor(ptdesc); 65 tlb_remove_ptdesc(tlb, ptdesc);
|
/linux-master/arch/mips/include/asm/ |
H A D | pgalloc.h | 68 struct ptdesc *ptdesc; local 70 ptdesc = pagetable_alloc(GFP_KERNEL_ACCOUNT, PMD_TABLE_ORDER); 71 if (!ptdesc) 74 if (!pagetable_pmd_ctor(ptdesc)) { 75 pagetable_free(ptdesc); 79 pmd = ptdesc_address(ptdesc); 93 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL & ~__GFP_HIGHMEM, local 96 if (!ptdesc) [all...] |
/linux-master/arch/loongarch/include/asm/ |
H A D | pgalloc.h | 58 struct ptdesc *ptdesc; local 60 ptdesc = pagetable_alloc(GFP_KERNEL_ACCOUNT, 0); 61 if (!ptdesc) 64 if (!pagetable_pmd_ctor(ptdesc)) { 65 pagetable_free(ptdesc); 69 pmd = ptdesc_address(ptdesc); 83 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL & ~__GFP_HIGHMEM, 0); local 85 if (!ptdesc) [all...] |
/linux-master/arch/arm64/include/asm/ |
H A D | tlb.h | 83 struct ptdesc *ptdesc = page_ptdesc(pte); local 85 pagetable_pte_dtor(ptdesc); 86 tlb_remove_ptdesc(tlb, ptdesc); 93 struct ptdesc *ptdesc = virt_to_ptdesc(pmdp); local 95 pagetable_pmd_dtor(ptdesc); 96 tlb_remove_ptdesc(tlb, ptdesc); 104 struct ptdesc *ptdesc local [all...] |
/linux-master/arch/mips/mm/ |
H A D | pgtable.c | 14 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL & ~__GFP_HIGHMEM, local 17 if (ptdesc) { 18 ret = ptdesc_address(ptdesc);
|
/linux-master/arch/s390/mm/ |
H A D | pgalloc.c | 46 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL, CRST_ALLOC_ORDER); local 49 if (!ptdesc) 51 table = ptdesc_to_virt(ptdesc); 138 struct ptdesc *page_table_alloc_pgste(struct mm_struct *mm) 140 struct ptdesc *ptdesc; local 143 ptdesc = pagetable_alloc(GFP_KERNEL, 0); 144 if (ptdesc) { 145 table = (u64 *)ptdesc_to_virt(ptdesc); 153 page_table_free_pgste(struct ptdesc *ptdesc) argument 162 struct ptdesc *ptdesc; local 181 pagetable_pte_dtor_free(struct ptdesc *ptdesc) argument 189 struct ptdesc *ptdesc = virt_to_ptdesc(table); local 196 struct ptdesc *ptdesc = virt_to_ptdesc(table); local 210 struct ptdesc *ptdesc = container_of(head, struct ptdesc, pt_rcu_head); local 217 struct ptdesc *ptdesc = virt_to_ptdesc(pgtable); local 253 struct ptdesc *ptdesc; local [all...] |
H A D | gmap.c | 209 struct ptdesc *ptdesc, *n; local 212 list_for_each_entry_safe(ptdesc, n, &gmap->pt_list, pt_list) 213 page_table_free_pgste(ptdesc); 1353 struct ptdesc *ptdesc; local 1366 ptdesc = page_ptdesc(phys_to_page(pgt)); 1367 list_del(&ptdesc->pt_list); 1368 page_table_free_pgste(ptdesc); 1382 struct ptdesc *ptdes local 2063 struct ptdesc *ptdesc; local [all...] |
/linux-master/arch/riscv/include/asm/ |
H A D | pgalloc.h | 102 struct ptdesc *ptdesc = virt_to_ptdesc(pud); local 104 pagetable_pud_dtor(ptdesc); 106 tlb_remove_page_ptdesc(tlb, ptdesc); 108 tlb_remove_ptdesc(tlb, ptdesc); 176 struct ptdesc *ptdesc = virt_to_ptdesc(pmd); local 178 pagetable_pmd_dtor(ptdesc); 180 tlb_remove_page_ptdesc(tlb, ptdesc); 182 tlb_remove_ptdesc(tlb, ptdesc); 190 struct ptdesc *ptdesc = page_ptdesc(pte); local [all...] |
/linux-master/arch/x86/mm/ |
H A D | pgtable.c | 63 struct ptdesc *ptdesc = virt_to_ptdesc(pmd); local 72 pagetable_pmd_dtor(ptdesc); 73 paravirt_tlb_remove_table(tlb, ptdesc_page(ptdesc)); 79 struct ptdesc *ptdesc = virt_to_ptdesc(pud); local 81 pagetable_pud_dtor(ptdesc); 98 struct ptdesc *ptdesc = virt_to_ptdesc(pgd); local 100 list_add(&ptdesc 105 struct ptdesc *ptdesc = virt_to_ptdesc(pgd); local 219 struct ptdesc *ptdesc; local 243 struct ptdesc *ptdesc = pagetable_alloc(gfp, 0); local [all...] |
/linux-master/arch/powerpc/mm/book3s64/ |
H A D | pgtable.c | 388 struct ptdesc *ptdesc; local 393 ptdesc = pagetable_alloc(gfp, 0); 394 if (!ptdesc) 396 if (!pagetable_pmd_ctor(ptdesc)) { 397 pagetable_free(ptdesc); 401 atomic_set(&ptdesc->pt_frag_refcount, 1); 403 ret = ptdesc_address(ptdesc); 418 atomic_set(&ptdesc->pt_frag_refcount, PMD_FRAG_NR); 439 struct ptdesc *ptdes local [all...] |
H A D | mmu_context.c | 249 struct ptdesc *ptdesc; local 251 ptdesc = virt_to_ptdesc(pmd_frag); 255 if (atomic_sub_and_test(PMD_FRAG_NR - count, &ptdesc->pt_frag_refcount)) { 256 pagetable_pmd_dtor(ptdesc); 257 pagetable_free(ptdesc);
|
/linux-master/arch/loongarch/mm/ |
H A D | pgtable.c | 27 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL & ~__GFP_HIGHMEM, 0); local 29 if (ptdesc) { 30 ret = (pgd_t *)ptdesc_address(ptdesc);
|
/linux-master/include/linux/ |
H A D | mm.h | 2830 static inline struct ptdesc *virt_to_ptdesc(const void *x) 2835 static inline void *ptdesc_to_virt(const struct ptdesc *pt) 2840 static inline void *ptdesc_address(const struct ptdesc *pt) 2845 static inline bool pagetable_is_reserved(struct ptdesc *pt) 2858 * Return: The ptdesc describing the allocated page tables. 2860 static inline struct ptdesc *pagetable_alloc(gfp_t gfp, unsigned int order) 2874 static inline void pagetable_free(struct ptdesc *pt) 2884 bool ptlock_alloc(struct ptdesc *ptdesc); 2885 void ptlock_free(struct ptdesc *ptdes 2887 ptlock_ptr(struct ptdesc *ptdesc) argument 2896 ptlock_alloc(struct ptdesc *ptdesc) argument 2901 ptlock_free(struct ptdesc *ptdesc) argument 2905 ptlock_ptr(struct ptdesc *ptdesc) argument 2916 ptlock_init(struct ptdesc *ptdesc) argument 2941 ptlock_init(struct ptdesc *ptdesc) argument 2942 ptlock_free(struct ptdesc *ptdesc) argument 2945 pagetable_pte_ctor(struct ptdesc *ptdesc) argument 2956 pagetable_pte_dtor(struct ptdesc *ptdesc) argument 3021 pmd_ptlock_init(struct ptdesc *ptdesc) argument 3029 pmd_ptlock_free(struct ptdesc *ptdesc) argument 3046 pmd_ptlock_init(struct ptdesc *ptdesc) argument 3047 pmd_ptlock_free(struct ptdesc *ptdesc) argument 3060 pagetable_pmd_ctor(struct ptdesc *ptdesc) argument 3071 pagetable_pmd_dtor(struct ptdesc *ptdesc) argument 3099 pagetable_pud_ctor(struct ptdesc *ptdesc) argument 3107 pagetable_pud_dtor(struct ptdesc *ptdesc) argument [all...] |
H A D | mm_types.h | 421 * struct ptdesc - Memory descriptor for page tables. 426 * @pmd_huge_pte: Protected by ptdesc->ptl, used for THPs. 440 struct ptdesc { struct 475 static_assert(offsetof(struct page, pg) == offsetof(struct ptdesc, pt)) 488 static_assert(sizeof(struct ptdesc) <= sizeof(struct page)); 491 const struct ptdesc *: (const struct page *)(pt), \ 492 struct ptdesc *: (struct page *)(pt))) 495 const struct ptdesc *: (const struct folio *)(pt), \ 496 struct ptdesc *: (struct folio *)(pt))) 499 const struct page *: (const struct ptdesc *)( [all...] |
/linux-master/arch/s390/include/asm/ |
H A D | pgalloc.h | 26 struct ptdesc *page_table_alloc_pgste(struct mm_struct *mm); 28 void page_table_free_pgste(struct ptdesc *ptdesc);
|
/linux-master/arch/riscv/mm/ |
H A D | init.c | 366 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL & ~__GFP_HIGHMEM, 0); local 368 BUG_ON(!ptdesc || !pagetable_pte_ctor(ptdesc)); 369 return __pa((pte_t *)ptdesc_address(ptdesc)); 447 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL & ~__GFP_HIGHMEM, 0); local 449 BUG_ON(!ptdesc || !pagetable_pmd_ctor(ptdesc)); 450 return __pa((pmd_t *)ptdesc_address(ptdesc)); [all...] |
/linux-master/arch/sparc/mm/ |
H A D | init_64.c | 2910 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL | __GFP_ZERO, 0); local 2912 if (!ptdesc) 2914 if (!pagetable_pte_ctor(ptdesc)) { 2915 pagetable_free(ptdesc); 2918 return ptdesc_address(ptdesc); 2928 struct ptdesc *ptdesc = virt_to_ptdesc(pte); local 2930 pagetable_pte_dtor(ptdesc); 2931 pagetable_free(ptdesc); [all...] |
/linux-master/arch/arm64/mm/ |
H A D | mmu.c | 471 struct ptdesc *ptdesc = page_ptdesc(phys_to_page(pa)); local 482 BUG_ON(!pagetable_pte_ctor(ptdesc)); 484 BUG_ON(!pagetable_pmd_ctor(ptdesc));
|
/linux-master/arch/arm/mm/ |
H A D | mmu.c | 740 void *ptdesc = pagetable_alloc(GFP_PGTABLE_KERNEL & ~__GFP_HIGHMEM, local 743 if (!ptdesc || !pagetable_pte_ctor(ptdesc)) 745 return ptdesc_to_virt(ptdesc);
|
/linux-master/mm/ |
H A D | memory.c | 6427 bool ptlock_alloc(struct ptdesc *ptdesc) argument 6434 ptdesc->ptl = ptl; 6438 void ptlock_free(struct ptdesc *ptdesc) argument 6440 kmem_cache_free(page_ptl_cachep, ptdesc->ptl);
|