x86/mm changes for v4.13
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: 8781fb7e9749da424e01daacd14834b674658c63 x86/mm: Delete a big outdated comment about TLB flushing
The main changes in this cycle were:
- Continued work to add support for 5-level paging provided by future Intel CPUs. In particular we switch the x86 GUP code to the generic implementation. (Kirill A. Shutemov)
- Continued work to add PCID CPU support to native kernels as well. In this round most of the focus is on reworking/refreshing the TLB flush infrastructure for the upcoming PCID changes. (Andy Lutomirski)
out-of-topic modifications in x86-mm-for-linus:
-------------------------------------------------
arch/arm/Kconfig # e585513b76f7: x86/mm/gup: Switch GUP to th arch/arm64/Kconfig # e585513b76f7: x86/mm/gup: Switch GUP to th arch/powerpc/Kconfig # e585513b76f7: x86/mm/gup: Switch GUP to th include/linux/mm_types_task.h # e73ad5ff2f76: mm, x86/mm: Make the batched include/linux/vm_event_item.h # 5dd0b16cdaff: mm/vmstat: Make NR_TLB_REMOT mm/Kconfig # e585513b76f7: x86/mm/gup: Switch GUP to th mm/gup.c # e585513b76f7: x86/mm/gup: Switch GUP to th mm/rmap.c # e73ad5ff2f76: mm, x86/mm: Make the batched
Thanks,
Ingo
------------------>
Andy Lutomirski (17):
x86/mm: Reimplement flush_tlb_page() using flush_tlb_mm_range() x86/mm: Reduce indentation in flush_tlb_func()
mm, x86/mm: Make the batched unmap TLB flush API more generic x86/mm: Pass flush_tlb_info to flush_tlb_others() etc
x86/mm: Change the leave_mm() condition for local TLB flushes x86/mm: Refactor flush_tlb_mm_range() to merge local and remote cases x86/mm: Use new merged flush logic in arch_tlbbatch_flush() x86/mm: Remove the UP asm/tlbflush.h code, always use the (formerly) SMP code x86/mm: Rework lazy TLB to track the actual loaded mm
x86/mm: Be more consistent wrt PAGE_SHIFT vs PAGE_SIZE in tlb flush code x86/mm, KVM: Teach KVM's VMX code that CR3 isn't a constant mm/vmstat: Make NR_TLB_REMOTE_FLUSH_RECEIVED available even on UP x86/mm: Split read_cr3() into read_cr3_pa() and __read_cr3() x86/ldt: Simplify the LDT switching logic
x86/mm: Remove reset_lazy_tlbstate()
x86/mm: Don't reenter flush_tlb_func_common()
x86/mm: Delete a big outdated comment about TLB flushing
Borislav Petkov (1):
x86/ldt: Rename ldt_struct::size to ::nr_entries
Kirill A. Shutemov (15):
x86/mm/gup: Switch GUP to the generic get_user_page_fast() implementation x86/asm: Fix comment in return_from_SYSCALL_64()
x86/boot/efi: Cleanup initialization of GDT entries x86/boot/efi: Fix __KERNEL_CS definition of GDT entry on 64-bit configurations x86/boot/efi: Define __KERNEL32_CS GDT on 64-bit configurations x86/boot/compressed: Enable 5-level paging during decompression stage x86/boot/64: Rewrite startup_64() in C
x86/boot/64: Rename init_level4_pgt and early_level4_pgt x86/boot/64: Add support of additional page table level during early boot x86/mm: Add sync_global_pgds() for configuration with 5-level paging x86/mm: Make kernel_physical_mapping_init() support 5-level paging x86/mm: Add support for 5-level paging for KASLR
x86/boot/64: Put __startup_64() into .head.text
x86/ftrace: Exclude functions in head64.c from function-tracing x86/KASLR: Fix detection 32/64 bit bootloaders for 5-level paging
Michal Hocko (1):
x86/mmap, ASLR: Do not treat unlimited-stack tasks as legacy mmap
arch/arm/Kconfig | 2 +- arch/arm64/Kconfig | 2 +- arch/powerpc/Kconfig | 2 +- arch/x86/Kconfig | 5 +- arch/x86/boot/compressed/eboot.c | 73 ++-- arch/x86/boot/compressed/head_64.S | 86 ++++- arch/x86/boot/compressed/pagetable.c | 18 +- arch/x86/entry/entry_64.S | 3 +- arch/x86/events/core.c | 5 +- arch/x86/include/asm/efi.h | 2 +- arch/x86/include/asm/hardirq.h | 2 +- arch/x86/include/asm/mmu.h | 6 - arch/x86/include/asm/mmu_context.h | 63 +++- arch/x86/include/asm/paravirt.h | 8 +- arch/x86/include/asm/paravirt_types.h | 5 +- arch/x86/include/asm/pgtable-3level.h | 47 +++ arch/x86/include/asm/pgtable.h | 55 ++- arch/x86/include/asm/pgtable_64.h | 22 +- arch/x86/include/asm/processor-flags.h | 36 ++ arch/x86/include/asm/processor.h | 8 + arch/x86/include/asm/special_insns.h | 10 +- arch/x86/include/asm/tlbbatch.h | 14 + arch/x86/include/asm/tlbflush.h | 114 ++----- arch/x86/include/asm/uv/uv.h | 11 +- arch/x86/include/uapi/asm/processor-flags.h | 2 + arch/x86/kernel/Makefile | 1 + arch/x86/kernel/espfix_64.c | 2 +- arch/x86/kernel/head64.c | 145 +++++++- arch/x86/kernel/head_64.S | 131 ++------ arch/x86/kernel/ldt.c | 56 ++-- arch/x86/kernel/machine_kexec_64.c | 2 +- arch/x86/kernel/paravirt.c | 2 +- arch/x86/kernel/process_32.c | 2 +- arch/x86/kernel/process_64.c | 4 +- arch/x86/kernel/smpboot.c | 1 - arch/x86/kernel/step.c | 2 +- arch/x86/kvm/vmx.c | 21 +- arch/x86/math-emu/fpu_system.h | 2 +- arch/x86/mm/Makefile | 2 +- arch/x86/mm/dump_pagetables.c | 2 +- arch/x86/mm/fault.c | 10 +- arch/x86/mm/gup.c | 496 ---------------------------- arch/x86/mm/init.c | 4 +- arch/x86/mm/init_64.c | 108 +++++- arch/x86/mm/ioremap.c | 2 +- arch/x86/mm/kasan_init_64.c | 12 +- arch/x86/mm/kaslr.c | 81 +++-- arch/x86/mm/mmap.c | 3 - arch/x86/mm/tlb.c | 458 +++++++++++-------------- arch/x86/platform/efi/efi_64.c | 4 +- arch/x86/platform/olpc/olpc-xo1-pm.c | 2 +- arch/x86/platform/uv/tlb_uv.c | 10 +- arch/x86/power/cpu.c | 2 +- arch/x86/power/hibernate_64.c | 3 +- arch/x86/realmode/init.c | 2 +- arch/x86/xen/mmu_pv.c | 83 +++-- arch/x86/xen/xen-pvh.S | 2 +- include/linux/mm_types_task.h | 15 +- include/linux/vm_event_item.h | 2 - mm/Kconfig | 2 +- mm/gup.c | 10 +- mm/rmap.c | 16 +- 62 files changed, 1083 insertions(+), 1220 deletions(-) create mode 100644 arch/x86/include/asm/tlbbatch.h delete mode 100644 arch/x86/mm/gup.c
[ ... diff skipped due to size ... ]