• Aneesh Kumar K.V's avatar
    powerpc: Switch 16GB and 16MB explicit hugepages to a different page table format · e2b3d202
    Aneesh Kumar K.V authored
    We will be switching PMD_SHIFT to 24 bits to facilitate THP impmenetation.
    With PMD_SHIFT set to 24, we now have 16MB huge pages allocated at PGD level.
    That means with 32 bit process we cannot allocate normal pages at
    all, because we cover the entire address space with one pgd entry. Fix this
    by switching to a new page table format for hugepages. With the new page table
    format for 16GB and 16MB hugepages we won't allocate hugepage directory. Instead
    we encode the PTE information directly at the directory level. This forces 16MB
    hugepage at PMD level. This will also make the page take walk much simpler later
    when we add the THP support.
    
    With the new table format we have 4 cases for pgds and pmds:
    (1) invalid (all zeroes)
    (2) pointer to next table, as normal; bottom 6 bits == 0
    (3) leaf pte for huge page, bottom two bits != 00
    (4) hugepd pointer, bottom two bits == 00, next 4 bits indicate size of table
    Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Acked-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    e2b3d202
hugetlbpage.c 24.1 KB