powerpc/mm/book(e)(3s)/64: Add page table accounting
authorBalbir Singh <bsingharora@gmail.com>
Tue, 2 May 2017 05:17:04 +0000 (15:17 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 5 Jun 2017 09:03:10 +0000 (19:03 +1000)
commitde3b87611dd1f3c00f4e42fe298457260ea781e0
tree77fc83dc2b9ac76f71600757674d959c4a6a33fe
parentc5cee6421cd651446b93c231f0ab8ff2530ba25d
powerpc/mm/book(e)(3s)/64: Add page table accounting

Introduce a helper pgtable_gfp_flags() which
just returns the current gfp flags and adds
__GFP_ACCOUNT to account for page table allocation.
The generic helper is added to include/asm/pgalloc.h
and has two variants - WARNING ugly bits ahead

1. If the header is included from a module, no check
for mm == &init_mm is done, since init_mm is not
exported
2. For kernel includes, the check is done and required
see (3e79ec7 arch: x86: charge page tables to kmemcg)

The fundamental assumption is that no module should be
doing pgd/pud/pmd and pte alloc's on behalf of init_mm
directly.

NOTE: This adds an overhead to pmd/pud/pgd allocations
similar to x86.  The other alternative was to implement
pmd_alloc_kernel/pud_alloc_kernel and pgd_alloc_kernel
with their offset variants.

For 4k page size, pte_alloc_one no longer calls
pte_alloc_one_kernel.

Signed-off-by: Balbir Singh <bsingharora@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/book3s/32/pgalloc.h
arch/powerpc/include/asm/book3s/64/pgalloc.h
arch/powerpc/include/asm/nohash/64/pgalloc.h
arch/powerpc/include/asm/pgalloc.h
arch/powerpc/mm/pgtable_64.c