On 4/17/19 6:29 PM, Aneesh Kumar K.V wrote:
This patch maps vmalloc, IO and vmemap regions in the 0xc address range
instead of the current 0xd and 0xf range. This brings the mapping closer
to radix translation mode.

With hash 64K page size each of this region is 512TB whereas with 4K config
we are limited by the max page table range of 64TB and hence there regions
are of 16TB size.

The kernel mapping is now:

  On 4K hash

      kernel_region_map_size = 16TB
      kernel vmalloc start   = 0xc000100000000000
      kernel IO start        = 0xc000200000000000
      kernel vmemmap start   = 0xc000300000000000

64K hash, 64K radix and 4k radix:

      kernel_region_map_size = 512TB
      kernel vmalloc start   = 0xc008000000000000
      kernel IO start        = 0xc00a000000000000
      kernel vmemmap start   = 0xc00c000000000000

I missed this when sending out the patch.

diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
index 263c3ff662c3..30fc0909f1d8 100644
--- a/arch/powerpc/mm/pgtable-radix.c
+++ b/arch/powerpc/mm/pgtable-radix.c
@@ -136,7 +136,7 @@ static int __map_kernel_page(unsigned long ea, unsigned long pa,
        BUILD_BUG_ON(TASK_SIZE_USER64 > RADIX_PGTABLE_RANGE);

 #ifdef CONFIG_PPC_64K_PAGES
-       BUILD_BUG_ON(RADIX_KERN_MAP_SIZE != MAX_EA_BITS_PER_CONTEXT);
+ BUILD_BUG_ON(RADIX_KERN_MAP_SIZE != (1UL << MAX_EA_BITS_PER_CONTEXT));
 #endif

        if (unlikely(!slab_is_available()))



Reply via email to