Michael Ellerman <mpe@xxxxxxxxxxxxxx> writes: > > On powerpc there are two ways for huge pages to be represented in the > top level page table, aka PGD (Page Global Directory). > > If the address space mapped by an individual PGD entry does not > correspond to a given huge page size, then the PGD entry points to a > non-standard page table, known as a "hugepd" (Huge Page Directory). > The hugepd contains some number of huge page PTEs sufficient to map the > address space with the given huge page size. > > On the other hand, if the address space mapped by an individual PGD > entry does correspond exactly to a given huge page size, that PGD entry > is used to directly encode the huge page PTE in place. In this case the > pgd_huge() wrapper indicates to generic code that the PGD entry is > actually a huge page PTE. > > This commit deals with the pgd_huge() case only, it does nothing with > respect to the hugepd case. > > Over time the size of the virtual address space supported on powerpc has > increased several times, which means the location at which huge pages > can sit in the tree has also changed. There have also been new huge page > sizes added, with the introduction of the Radix MMU. > > On Power9 and later with the Radix MMU, the largest huge page size in > any implementation is 1GB. > > Since the introduction of Radix, 1GB entries have been supported at the > PUD level, with both 4K and 64K base page size. Radix has never had a > supported huge page size at the PGD level. > > On Power8 or earlier, which uses the Hash MMU, or Power9 or later with > the Hash MMU enabled, the largest huge page size is 16GB. > > Using the Hash MMU and a base page size of 4K, 16GB has never been a > supported huge page size at the PGD level, due to the geometry being > incompatible. The two supported huge page sizes (16M & 16GB) both use > the hugepd format. > > Using the Hash MMU and a base page size of 64K, 16GB pages were > supported in the past at the PGD level. > > However in commit ba95b5d03596 ("powerpc/mm/book3s/64: Rework page table > geometry for lower memory usage") the page table layout was reworked to > shrink the size of the PGD. > > As a result the 16GB page size now fits at the PUD level when using 64K > base page size. > > Therefore there are no longer any supported configurations where > pgd_huge() can be true, so drop the definitions for pgd_huge(), and > fallback to the generic definition which is always false. > Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx> > Fixes: ba95b5d03596 ("powerpc/mm/book3s/64: Rework page table geometry for lower memory usage") > Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx> > --- > arch/powerpc/include/asm/book3s/64/pgtable-4k.h | 10 ---------- > arch/powerpc/include/asm/book3s/64/pgtable-64k.h | 9 --------- > 2 files changed, 19 deletions(-) > > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable-4k.h b/arch/powerpc/include/asm/book3s/64/pgtable-4k.h > index 4e697bc2f4cd..48f21820afe2 100644 > --- a/arch/powerpc/include/asm/book3s/64/pgtable-4k.h > +++ b/arch/powerpc/include/asm/book3s/64/pgtable-4k.h > @@ -26,16 +26,6 @@ static inline int pud_huge(pud_t pud) > return 0; > } > > -static inline int pgd_huge(pgd_t pgd) > -{ > - /* > - * leaf pte for huge page > - */ > - if (radix_enabled()) > - return !!(pgd_raw(pgd) & cpu_to_be64(_PAGE_PTE)); > - return 0; > -} > -#define pgd_huge pgd_huge > /* > * With radix , we have hugepage ptes in the pud and pmd entries. We don't > * need to setup hugepage directory for them. Our pte and page directory format > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable-64k.h b/arch/powerpc/include/asm/book3s/64/pgtable-64k.h > index 34d1018896b3..2fce3498b000 100644 > --- a/arch/powerpc/include/asm/book3s/64/pgtable-64k.h > +++ b/arch/powerpc/include/asm/book3s/64/pgtable-64k.h > @@ -30,15 +30,6 @@ static inline int pud_huge(pud_t pud) > return !!(pud_raw(pud) & cpu_to_be64(_PAGE_PTE)); > } > > -static inline int pgd_huge(pgd_t pgd) > -{ > - /* > - * leaf pte for huge page > - */ > - return !!(pgd_raw(pgd) & cpu_to_be64(_PAGE_PTE)); > -} > -#define pgd_huge pgd_huge > - > /* > * With 64k page size, we have hugepage ptes in the pgd and pmd entries. We don't > * need to setup hugepage directory for them. Our pte and page directory format > -- > 2.37.2