• K
    x86/mm: Make MAX_PHYSADDR_BITS and MAX_PHYSMEM_BITS dynamic · 162434e7
    Kirill A. Shutemov 提交于
    For boot-time switching between paging modes, we need to be able to
    adjust size of physical address space at runtime.
    
    As part of making physical address space size variable, we have to make
    X86_5LEVEL dependent on SPARSEMEM_VMEMMAP. !SPARSEMEM_VMEMMAP
    configuration doesn't build with variable MAX_PHYSMEM_BITS.
    
    For !SPARSEMEM_VMEMMAP SECTIONS_WIDTH depends on MAX_PHYSMEM_BITS:
    
    SECTIONS_WIDTH
      SECTIONS_SHIFT
        MAX_PHYSMEM_BITS
    
    And SECTIONS_WIDTH is used on pre-processor stage, it doesn't work if it's
    dyncamic. See include/linux/page-flags-layout.h.
    
    Effect on kernel image size:
    
       text	   data	    bss	    dec	    hex	filename
    8628393	4734340	1368064	14730797	 e0c62d	vmlinux.before
    8628892	4734340	1368064	14731296	 e0c820	vmlinux.after
    Signed-off-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/20180214111656.88514-8-kirill.shutemov@linux.intel.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
    162434e7
sparsemem.h 990 字节