[PATCH] powerpc: Fix pagetable bloat for hugepages
authorDavid Gibson <david@gibson.dropbear.id.au>
Fri, 28 Apr 2006 05:02:51 +0000 (15:02 +1000)
committerPaul Mackerras <paulus@samba.org>
Fri, 28 Apr 2006 05:02:51 +0000 (15:02 +1000)
commitf10a04c034c7285a1b15dfa4a83d3e56578e34e8
treeee6bd0c670b6606017cbd88b56a1247ff241e00e
parent37e53db8aa233c65142d63b496277bf5be9c0ade
[PATCH] powerpc: Fix pagetable bloat for hugepages

At present, ARCH=powerpc kernels can waste considerable space in
pagetables when making large hugepage mappings.  Hugepage PTEs go in
PMD pages, but each PMD page maps 256M and so contains only 16
hugepage PTEs (128 bytes of data), but takes up a 1024 byte
allocation.  With CONFIG_PPC_64K_PAGES enabled (64k base page size),
the situation is worse.  Now hugepage PTEs are at the PTE page level
(also mapping 256M), so we store 16 hugepage PTEs in a 64k allocation.

The PowerPC MMU already means that any 256M region is either all
hugepage, or all normal pages.  Thus, with some care, we can use a
different allocation for the hugepage PTE tables and only allocate the
128 bytes necessary.

Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/mm/hugetlbpage.c
arch/powerpc/mm/init_64.c
include/asm-powerpc/page_64.h
include/asm-powerpc/pgalloc.h