mm, x86/mm: Untangle address space layout definitions from basic pgtable type definitions
authorIngo Molnar <mingo@kernel.org>
Fri, 29 Nov 2019 07:17:25 +0000 (08:17 +0100)
committerIngo Molnar <mingo@kernel.org>
Tue, 10 Dec 2019 09:12:55 +0000 (10:12 +0100)
commit186525bd6b83efc592672e2d6185e4d7c810d2b4
tree0fd5cb176e8e113a552730ea07dedbb8359e652b
parent1f059dfdf5d170dccbac92193be2fee3c1763384
mm, x86/mm: Untangle address space layout definitions from basic pgtable type definitions

- Untangle the somewhat incestous way of how VMALLOC_START is used all across the
  kernel, but is, on x86, defined deep inside one of the lowest level page table headers.
  It doesn't help that vmalloc.h only includes a single asm header:

     #include <asm/page.h>           /* pgprot_t */

  So there was no existing cross-arch way to decouple address layout
  definitions from page.h details. I used this:

   #ifndef VMALLOC_START
   # include <asm/vmalloc.h>
   #endif

  This way every architecture that wants to simplify page.h can do so.

- Also on x86 we had a couple of LDT related inline functions that used
  the late-stage address space layout positions - but these could be
  uninlined without real trouble - the end result is cleaner this way as
  well.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
15 files changed:
arch/x86/include/asm/cpu_entry_area.h
arch/x86/include/asm/mmu_context.h
arch/x86/include/asm/pgtable_32_areas.h [new file with mode: 0644]
arch/x86/include/asm/pgtable_32_types.h
arch/x86/include/asm/pgtable_areas.h [new file with mode: 0644]
arch/x86/include/asm/vmalloc.h
arch/x86/kernel/ldt.c
arch/x86/kernel/setup.c
arch/x86/mm/fault.c
arch/x86/mm/init_32.c
arch/x86/mm/pgtable_32.c
arch/x86/mm/physaddr.c
include/linux/mm.h
mm/highmem.c
mm/vmalloc.c