[PATCH 3/3] powerpc/mm: Speed up computation of base and actual page size for a HPTE
Aneesh Kumar K.V
aneesh.kumar at linux.vnet.ibm.com
Sun Sep 4 21:16:36 AEST 2016
Paul Mackerras <paulus at ozlabs.org> writes:
> +/*
> + * Fill in the hpte_page_sizes[] array.
> + * We go through the mmu_psize_defs[] array looking for all the
> + * supported base/actual page size combinations. Each combination
> + * has a unique pagesize encoding (penc) value in the low bits of
> + * the LP field of the HPTE. For actual page sizes less than 1MB,
> + * some of the upper LP bits are used for RPN bits, meaning that
> + * we need to fill in several entries in hpte_page_sizes[].
> + */
May be can put the details of upper LP bits used for RPN here. ie, add
the below in the comment ?
/*
* encoding bits per actual page size
* PTE LP actual page size
* rrrr rrrz >=8KB
* rrrr rrzz >=16KB
* rrrr rzzz >=32KB
* rrrr zzzz >=64KB
* .......
*/
> +static void init_hpte_page_sizes(void)
> +{
> + long int ap, bp;
> + long int shift, penc;
> +
> + for (bp = 0; bp < MMU_PAGE_COUNT; ++bp) {
> + if (!mmu_psize_defs[bp].shift)
> + continue; /* not a supported page size */
> + for (ap = bp; ap < MMU_PAGE_COUNT; ++ap) {
> + penc = mmu_psize_defs[bp].penc[ap];
> + if (penc == -1)
> + continue;
> + shift = mmu_psize_defs[ap].shift - LP_SHIFT;
> + if (shift <= 0)
> + continue; /* should never happen */
> + while (penc < (1 << LP_BITS)) {
> + hpte_page_sizes[penc] = (ap << 4) | bp;
> + penc += 1 << shift;
> + }
Can you add a comment around that while loop ? ie something like.
/*
* if we are using all LP_BITs in penc, fill the array such that we
* replicate the ap and bp information, ignoring those bits. They will
* be filled by rpn bits in hpte.
*/
> + }
> + }
> +}
> +
> static void __init htab_init_page_sizes(void)
> {
> + init_hpte_page_sizes();
> +
> if (!debug_pagealloc_enabled()) {
> /*
> * Pick a size for the linear mapping. Currently, we only
> --
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar at linux.vnet.ibm.com>
-aneesh
More information about the Linuxppc-dev
mailing list