• Kirill A. Shutemov's avatar
    alpha: expose number of page table levels on Kconfig level · f5d4547a
    Kirill A. Shutemov authored
    I've implemented accounting for pmd page tables as we have for pte (see
    mm->nr_ptes).  It's requires a new counter in mm_struct: mm->nr_pmds.
    
    But the feature doesn't make any sense if an architecture has PMD level
    folded and it would be nice get rid of the counter in this case.
    
    The problem is that we cannot use __PAGETABLE_PMD_FOLDED in
    <linux/mm_types.h> due to circular dependencies:
    
    <linux/mm_types> -> <asm/pgtable.h> -> <linux/mm_types.h>
    
    In most cases <asm/pgtable.h> wants <linux/mm_types.h> to get definition
    of struct page and struct vm_area_struct.  I've tried to split mm_struct
    into separate header file to be able to user <asm/pgtable.h> there.
    
    But it doesn't fly on some architectures, like ARM: it wants mm_struct
    <asm/pgtable.h> to implement tlb flushing.  I don't see how to fix it
    without massive de-inlining or coverting a lot for inline functions to
    macros.
    
    This is other approach: expose number of page tables in use via Kconfig
    and use it in <linux/mm_types.h> instead of __PAGETABLE_PMD_FOLDED from
    <asm/pgtable.h>.
    
    This patch (of 19):
    
    We would want to use number of page table level to define mm_struct.
    Let's expose it as CONFIG_PGTABLE_LEVELS.
    Signed-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: default avatarRichard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Matt Turner <mattst88@gmail.com>
    Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Chris Metcalf <cmetcalf@ezchip.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jeff Dike <jdike@addtoit.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f5d4547a
Kconfig 21.5 KB