On Fri, Nov 13, 2020 at 12:19:03PM +0100, Peter Zijlstra wrote: > A number of architectures have non-pagetable aligned huge/large pages. > For such architectures a leaf can actually be part of a larger TLB > entry. > > Provide generic helpers to determine the TLB size of a page-table > leaf. > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > --- > include/linux/pgtable.h | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -1536,4 +1536,20 @@ typedef unsigned int pgtbl_mod_mask; > #define pmd_leaf(x) 0 > #endif > > +#ifndef pgd_leaf_size > +#define pgd_leaf_size(x) PGD_SIZE Argh, I lost a refresh, that should've been: +#define pgd_leaf_size(x) (1ULL << PGDIR_SHIFT) > +#endif > +#ifndef p4d_leaf_size > +#define p4d_leaf_size(x) P4D_SIZE > +#endif > +#ifndef pud_leaf_size > +#define pud_leaf_size(x) PUD_SIZE > +#endif > +#ifndef pmd_leaf_size > +#define pmd_leaf_size(x) PMD_SIZE > +#endif > +#ifndef pte_leaf_size > +#define pte_leaf_size(x) PAGE_SIZE > +#endif > + > #endif /* _LINUX_PGTABLE_H */ > >