Message ID | 20250331081327.256412-7-bhe@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm/gup: Minor fix, cleanup and improvements | expand |
* Baoquan He <bhe@redhat.com> wrote: > > So the above comment should have said '256 TB' pages, unless > > there's some naming weirdness I missed. > > Hmm, there could be misunderstanding here. In 5-level paging, PGD is > the highest level, P4D is the next level of PGD. You may have > reversed their order. Erm, yes indeed I flipped those two, so the correct table should be: - level 0: 4K pages - level 1: 512x 4K = 2MB 'large' pages - level 2: 512x 2MB = 1GB 'huge' pages - level 3: 512x 1GB = 512GB 'P4D' pages - level 4: 512x 512GB = 256TB 'PGD' pages I'm wondering whether 512GB pages will be called 'terapages'. ;-) Thanks, Ingo
On Mon, Mar 31, 2025 at 04:13:26PM +0800, Baoquan He wrote: > There's no p4d huge page support yet, let's use the generic definition. > > And also update the BUILD_BUG_ON() in pti_user_pagetable_walk_pmd() > because p4d_leaf() returns boolean value. > > Signed-off-by: Baoquan He <bhe@redhat.com> > Cc: x86@kernel.org Reviewed-by: Oscar Salvador <osalvador@suse.de>
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 5f4fcc0eea17..5ddba366d3b4 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -292,13 +292,6 @@ static inline unsigned long pgd_pfn(pgd_t pgd) return (pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT; } -#define p4d_leaf p4d_leaf -static inline bool p4d_leaf(p4d_t p4d) -{ - /* No 512 GiB pages yet */ - return 0; -} - #define pte_page(pte) pfn_to_page(pte_pfn(pte)) #define pmd_leaf pmd_leaf diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c index c2e1de40136f..190299834011 100644 --- a/arch/x86/mm/pti.c +++ b/arch/x86/mm/pti.c @@ -206,7 +206,7 @@ static pmd_t *pti_user_pagetable_walk_pmd(unsigned long address) if (!p4d) return NULL; - BUILD_BUG_ON(p4d_leaf(*p4d) != 0); + BUILD_BUG_ON(p4d_leaf(*p4d)); if (p4d_none(*p4d)) { unsigned long new_pud_page = __get_free_page(gfp); if (WARN_ON_ONCE(!new_pud_page))
There's no p4d huge page support yet, let's use the generic definition. And also update the BUILD_BUG_ON() in pti_user_pagetable_walk_pmd() because p4d_leaf() returns boolean value. Signed-off-by: Baoquan He <bhe@redhat.com> Cc: x86@kernel.org --- arch/x86/include/asm/pgtable.h | 7 ------- arch/x86/mm/pti.c | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-)