[GIT PULL] x86/mm changes for v4.12

From: Ingo Molnar
Date: Mon May 01 2017 - 08:03:47 EST


Linus,

Please pull the latest x86-mm-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-mm-for-linus

# HEAD: 71389703839ebe9cb426c72d5f0bd549592e583c mm, zone_device: Replace {get, put}_zone_device_page() with a single reference to fix pmem crash

NOTE: due to a very busy cycle within the x86 tree, this tree grew a number of
dependencies and thus depends on you having pulled the following v4.12 trees:

x86-process-for-linus
x86-cpu-for-linus
x86-boot-for-linus

If you did not pull some of those trees then please disregard this pull request,
I'll rework it all!

The main x86 MM changes in this cycle were:

- Continued native kernel PCID support preparation patches to the TLB flushing
code (Andy Lutomirski)

- Various fixes related to 32-bit compat syscall returning address over 4Gb in
applications, launched from 64-bit binaries - motivated by C/R frameworks such
as Virtuozzo. (Dmitry Safonov)

- Continued Intel 5-level paging enablement: in particular the conversion
of x86 GUP to the generic GUP code. (Kirill A. Shutemov)

- x86/mpx ABI corner case fixes/enhancements (Joerg Roedel)

- ... plus misc updates, fixes and cleanups.

I'd like to draw special attention to this late MM commit:

71389703839e: mm, zone_device: Replace {get, put}_zone_device_page() with a single reference to fix pmem crash

... which is a late fix, and which I believe is the right thing to do - but please
double check.

Thanks,

Ingo

------------------>

Andy Lutomirski (12):
x86/tls: Forcibly set the accessed bit in TLS segments
selftests/x86/ldt_gdt_32: Work around a glibc sigaction() bug
x86/gdt: Fix setup_fixmap_gdt() to use the correct PA
x86/efi/32: Fix EFI on systems where the per-cpu GDT is virtually mapped
x86/boot/32: Defer resyncing initial_page_table until per-cpu is set up
x86/gdt: Get rid of the get_*_gdt_*_vaddr() helpers
x86/xen/gdt: Use X86_FEATURE_XENPV instead of globals for the GDT fixup
x86/boot/32: Rewrite test_wp_bit()
x86/vm86/32: Switch to flush_tlb_mm_range() in mark_screen_rdonly()
x86/mm: Remove flush_tlb() and flush_tlb_current_task()
x86/mm: Make flush_tlb_mm_range() more predictable
x86/mm: Fix flush_tlb_page() on Xen

Borislav Petkov (1):
x86/boot/32: Flip the logic in test_wp_bit()

Colin King (1):
x86/boot/e820: Remove a redundant self assignment

Dan Williams (1):
mm, zone_device: Replace {get, put}_zone_device_page() with a single reference to fix pmem crash

Dmitry Safonov (6):
x86/mm: Introduce arch_rnd() to compute 32/64 mmap random base
x86/mm: Add task_size parameter to mmap_base()
x86/mm: Introduce mmap_compat_base() for 32-bit mmap()
x86/mm: Make mmap(MAP_32BIT) work correctly
x86/hugetlb: Adjust to the new native/compat mmap bases
x86/mm: Make in_compat_syscall() work during exec

Ingo Molnar (6):
Merge branch 'linus' into x86/mm, to pick up a bugfix
Merge branch 'x86/process' into x86/mm, to create new base for further patches
Merge branch 'x86/cpu' into x86/mm, before applying dependent patch
Merge tag 'v4.11-rc5' into x86/mm, to refresh the branch
Merge branch 'x86/boot' into x86/mm, to avoid conflict
Revert "x86/mm/gup: Switch GUP to the generic get_user_page_fast() implementation"

Joerg Roedel (2):
x86/mpx: Correctly report do_mpx_bt_fault() failures to user-space
x86/mpx, selftests: Only check bounds-vs-shadow when we keep shadow

Juergen Gross (1):
x86/mm: Fix dump pagetables for 4 levels of page tables

Kirill A. Shutemov (28):
x86/mm: Extend headers with basic definitions to support 5-level paging
x86/mm: Convert trivial cases of page table walk to 5-level paging
x86/mm/gup: Add 5-level paging support
x86/mm/ident_map: Add 5-level paging support
x86/mm/vmalloc: Add 5-level paging support
x86/power: Add 5-level paging support
mm/gup: Drop the arch_pte_access_permitted() MMU callback
mm/gup: Move permission checks into helpers
mm/gup: Move page table entry dereference into helper function
mm/gup: Mark all pages PageReferenced in generic get_user_pages_fast()
mm/gup: Implement the dev_pagemap() logic in the generic get_user_pages_fast() function
mm/gup: Provide callback to check if __GUP_fast() is allowed for the range
x86/mm/gup: Switch GUP to the generic get_user_page_fast() implementation
x86/kexec: Add 5-level paging support
x86/efi: Add 5-level paging support
x86/mm/pat: Add 5-level paging support
x86/kasan: Prepare clear_pgds() to switch to <asm-generic/pgtable-nop4d.h>
x86: Convert the rest of the code to support p4d_t
mm: Fix false-positive VM_BUG_ON() in page_cache_{get,add}_speculative()
x86/dump_pagetables: Add support for 5-level paging
x86/boot: Detect 5-level paging support
x86/asm: Remove __VIRTUAL_MASK_SHIFT==47 assert
x86/mm: Define virtual memory map for 5-level paging
x86/paravirt: Add 5-level support to the paravirt code
x86/mm: Add basic defines/helpers for CONFIG_X86_5LEVEL=y
x86/kasan: Extend KASAN to support 5-level paging
x86/espfix: Add support for 5-level paging
x86/mm/64: Fix crash in remove_pagetable()

Thomas Garnier (5):
x86/mm: Adapt MODULES_END based on fixmap section size
x86: Remap GDT tables in the fixmap section
x86: Make the GDT remapping read-only on 64-bit
x86/mm: Correct fixmap header usage on adaptable MODULES_END
x86/headers: Simplify asm/fixmap.h inclusion into asm/pgtable*.h

Thomas Gleixner (1):
Revert "x86/mm/numa: Remove numa_nodemask_from_meminfo()"

Wei Yang (2):
x86/mm/numa: Improve alloc_node_data() error path message
x86/mm/numa: Remove numa_nodemask_from_meminfo()

Xiong Zhang (1):
x86/xen: Change __xen_pgd_walk() and xen_cleanmfnmap() to support p4d


Documentation/x86/x86_64/mm.txt | 36 ++-
arch/Kconfig | 7 +
arch/powerpc/include/asm/mmu_context.h | 6 -
arch/s390/include/asm/mmu_context.h | 6 -
arch/um/include/asm/mmu_context.h | 6 -
arch/unicore32/include/asm/mmu_context.h | 6 -
arch/x86/Kconfig | 2 +
arch/x86/boot/cpucheck.c | 9 +
arch/x86/boot/cpuflags.c | 12 +-
arch/x86/entry/entry_64.S | 7 +-
arch/x86/entry/vdso/vma.c | 2 +-
arch/x86/include/asm/desc.h | 147 +++++++---
arch/x86/include/asm/disabled-features.h | 8 +-
arch/x86/include/asm/elf.h | 28 +-
arch/x86/include/asm/fixmap.h | 4 +
arch/x86/include/asm/kasan.h | 9 +-
arch/x86/include/asm/kexec.h | 1 +
arch/x86/include/asm/mmu_context.h | 4 -
arch/x86/include/asm/page_64_types.h | 10 +
arch/x86/include/asm/paravirt.h | 54 +++-
arch/x86/include/asm/paravirt_types.h | 17 +-
arch/x86/include/asm/pgalloc.h | 37 ++-
arch/x86/include/asm/pgtable-2level_types.h | 1 +
arch/x86/include/asm/pgtable-3level_types.h | 1 +
arch/x86/include/asm/pgtable.h | 84 +++++-
arch/x86/include/asm/pgtable_32.h | 1 -
arch/x86/include/asm/pgtable_64.h | 23 +-
arch/x86/include/asm/pgtable_64_types.h | 32 ++-
arch/x86/include/asm/pgtable_types.h | 46 +++-
arch/x86/include/asm/processor.h | 6 +-
arch/x86/include/asm/required-features.h | 8 +-
arch/x86/include/asm/sparsemem.h | 9 +-
arch/x86/include/asm/stackprotector.h | 2 +-
arch/x86/include/asm/tlbflush.h | 9 -
arch/x86/include/asm/xen/page.h | 8 +-
arch/x86/kernel/acpi/sleep.c | 2 +-
arch/x86/kernel/apm_32.c | 6 +-
arch/x86/kernel/cpu/common.c | 59 ++++-
arch/x86/kernel/e820.c | 1 -
arch/x86/kernel/espfix_64.c | 12 +-
arch/x86/kernel/machine_kexec_32.c | 4 +-
arch/x86/kernel/machine_kexec_64.c | 14 +-
arch/x86/kernel/paravirt.c | 13 +-
arch/x86/kernel/process_64.c | 67 +++--
arch/x86/kernel/setup.c | 15 --
arch/x86/kernel/setup_percpu.c | 23 +-
arch/x86/kernel/smpboot.c | 2 +-
arch/x86/kernel/sys_x86_64.c | 15 +-
arch/x86/kernel/tboot.c | 6 +-
arch/x86/kernel/tls.c | 11 +-
arch/x86/kernel/vm86_32.c | 8 +-
arch/x86/kvm/svm.c | 4 +-
arch/x86/kvm/vmx.c | 12 +-
arch/x86/mm/dump_pagetables.c | 59 ++++-
arch/x86/mm/fault.c | 66 ++++-
arch/x86/mm/gup.c | 33 ++-
arch/x86/mm/hugetlbpage.c | 9 +-
arch/x86/mm/ident_map.c | 51 +++-
arch/x86/mm/init_32.c | 68 ++---
arch/x86/mm/init_64.c | 185 ++++++++++---
arch/x86/mm/ioremap.c | 3 +-
arch/x86/mm/kasan_init_64.c | 33 ++-
arch/x86/mm/mmap.c | 125 ++++++---
arch/x86/mm/mpx.c | 10 +-
arch/x86/mm/numa.c | 4 +-
arch/x86/mm/pageattr.c | 54 +++-
arch/x86/mm/pgtable.c | 36 ++-
arch/x86/mm/pgtable_32.c | 8 +-
arch/x86/mm/tlb.c | 33 +--
arch/x86/platform/efi/efi_32.c | 4 +-
arch/x86/platform/efi/efi_64.c | 41 ++-
arch/x86/power/cpu.c | 7 +-
arch/x86/power/hibernate_32.c | 7 +-
arch/x86/power/hibernate_64.c | 47 +++-
arch/x86/xen/enlighten.c | 2 +-
arch/x86/xen/mmu.c | 398 +++++++++++++++++-----------
arch/x86/xen/mmu.h | 1 +
arch/x86/xen/smp.c | 2 +-
drivers/dax/pmem.c | 2 +-
drivers/lguest/x86/core.c | 6 +-
drivers/nvdimm/pmem.c | 13 +-
drivers/pnp/pnpbios/bioscalls.c | 10 +-
include/asm-generic/mm_hooks.h | 6 -
include/asm-generic/pgtable.h | 25 ++
include/linux/mm.h | 18 +-
include/linux/mm_types.h | 5 +
include/linux/pagemap.h | 4 +-
include/trace/events/xen.h | 28 +-
kernel/memremap.c | 22 +-
mm/gup.c | 148 +++++++++--
mm/swap.c | 10 +
tools/testing/selftests/x86/ldt_gdt.c | 46 ++++
tools/testing/selftests/x86/mpx-mini-test.c | 5 +-
93 files changed, 1845 insertions(+), 711 deletions(-)