[GIT PULL] x86/asm changes for v4.6
From: Ingo Molnar
Date: Mon Mar 14 2016 - 09:03:31 EST
Linus,
Please pull the latest x86-asm-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-asm-for-linus
# HEAD: d05004944206cbbf1c453e179768163731c7c6f1 x86/cpufeature: Enable new AVX-512 features
This is another big update. Main changes are:
- lots of x86 system call (and other traps/exceptions) entry code enhancements.
In particular the complex parts of the 64-bit entry code have been
migrated to C code as well, and a number of dusty corners have been refreshed.
(Andy Lutomirski)
- vDSO special mapping robustification and general cleanups (Andy Lutomirski)
- cpufeature refactoring, cleanups and speedups (Borislav Petkov)
- lots of other changes ...
out-of-topic modifications in x86-asm-for-linus:
--------------------------------------------------
drivers/cpufreq/intel_pstate.c # bc696ca05f5a: x86/cpufeature: Replace the
fs/btrfs/disk-io.c # bc696ca05f5a: x86/cpufeature: Replace the
include/linux/mm.h # 1745cbc5d0de: mm: Add vm_insert_pfn_prot()
include/linux/mm_types.h # f872f5400cc0: mm: Add a vm_special_mapping
kernel/events/uprobes.c # 869ae76147ff: uprobes: __create_xol_area()
lib/atomic64_test.c # cd4d09ec6f6c: x86/cpufeature: Carve out X8
mm/memory.c # 1745cbc5d0de: mm: Add vm_insert_pfn_prot()
mm/mmap.c # f872f5400cc0: mm: Add a vm_special_mapping
tools/testing/selftests/x86/Makefile# 6c25da5ad55d: x86/signal/64: Re-add suppor
# e21d50f3864e: selftests/x86: Add check_ini
# c31b34255b48: selftests/x86: Extend Makefi
tools/testing/selftests/x86/check_initial_reg_state.c# e21d50f3864e: selftests/x86: Add check_ini
tools/testing/selftests/x86/ptrace_syscall.c# 403613432222: selftests/x86: Add a test fo
# adcfd23ead69: selftests/x86: Fix some erro
tools/testing/selftests/x86/sigreturn.c# 4f6c89382293: selftests/x86: Add tests for
tools/testing/selftests/x86/syscall_nt.c# a318beea224d: selftests/x86: In syscall_nt
Thanks,
Ingo
------------------>
Alexander Kuleshov (3):
x86/asm/entry: Remove unused SAVE_ALL/RESTORE_ALL macros for !CONFIG_x86_64
x86/asm: Remove unused L3_PAGE_OFFSET
x86/entry/traps: Refactor preemption and interrupt flag handling
Andy Lutomirski (42):
mm: Add a vm_special_mapping.fault() method
mm: Add vm_insert_pfn_prot()
x86/vdso: Track each mm's loaded vDSO image as well as its base
x86/vdso: Use .fault for the vDSO text mapping
x86/vdso: Use ->fault() instead of remap_pfn_range() for the vvar mapping
x86/vdso: Disallow vvar access to vclock IO for never-used vclocks
selftests/x86: Extend Makefile to allow 64-bit-only tests
selftests/x86: Add check_initial_reg_state()
x86/syscalls: Refactor syscalltbl.sh
x86/syscalls: Remove __SYSCALL_COMMON and __SYSCALL_X32
x86/syscalls: Move compat syscall entry handling into syscalltbl.sh
x86/syscalls: Add syscall entry qualifiers
x86/entry/64: Always run ptregs-using syscalls on the slow path
x86/entry/64: Call all native slow-path syscalls with full pt-regs
x86/entry/64: Stop using int_ret_from_sys_call in ret_from_fork
x86/entry/64: Migrate the 64-bit syscall slow path to C
x86/entry/64: Fix an IRQ state error on ptregs-using syscalls
x86/entry/64: Fix fast-path syscall return register state
x86/syscalls/64: Mark sys_iopl() as using ptregs
x86/signal/64: Add a comment about sigcontext->fs and gs
x86/signal/64: Fix SS if needed when delivering a 64-bit signal
x86/signal/64: Re-add support for SS in the 64-bit signal context
selftests/x86: Add tests for UC_SIGCONTEXT_SS and UC_STRICT_RESTORE_SS
selftests/x86: Fix some error messages in ptrace_syscall
selftests/x86: Add a test for syscall restart under ptrace
x86/entry/compat: Keep TS_COMPAT set during signal delivery
x86/entry/32: Introduce and use X86_BUG_ESPFIX instead of paravirt_enabled
x86/asm-offsets: Remove PARAVIRT_enabled
selftests/x86: In syscall_nt, test NT|TF as well
x86/entry/compat: In SYSENTER, sink AC clearing below the existing FLAGS test
x86/entry/32: Filter NT and speed up AC filtering in SYSENTER
x86/entry/32: Restore FLAGS on SYSEXIT
x86/entry/traps: Clear TIF_BLOCKSTEP on all debug exceptions
x86/entry/traps: Clear DR6 early in do_debug() and improve the comment
x86/entry: Vastly simplify SYSENTER TF (single-step) handling
x86/entry: Only allocate space for tss_struct::SYSENTER_stack if needed
x86/entry/32: Simplify and fix up the SYSENTER stack #DB/NMI fixup
x86/entry/32: Add and check a stack canary for the SYSENTER stack
x86/entry: Remove TIF_SINGLESTEP entry work
x86/entry: Improve system call entry comments
x86/entry/32: Change INT80 to be an interrupt gate
x86/entry: Call enter_from_user_mode() with IRQs off
Borislav Petkov (9):
x86/cpufeature: Add AMD AVIC bit
x86/cpufeature: Carve out X86_FEATURE_*
x86/cpufeature: Replace the old static_cpu_has() with safe variant
x86/cpufeature: Get rid of the non-asm goto variant
x86/alternatives: Add an auxilary section
x86/vdso: Use static_cpu_has()
x86/cpufeature: Speed up cpu_feature_enabled()
x86/ftrace, x86/asm: Kill ftrace_caller_end label
x86/msr: Document msr-index.h rule for addition
Brian Gerst (1):
x86/alternatives: Discard dynamic check after init
Denys Vlasenko (1):
x86/asm/bitops: Force inlining of test_and_set_bit and friends
Dmitry V. Levin (1):
x86/signal: Cleanup get_nr_restart_syscall()
Fenghua Yu (1):
x86/cpufeature: Enable new AVX-512 features
Ingo Molnar (5):
Merge tag 'v4.5-rc1' into x86/asm, to refresh the branch before merging new changes
Merge branch 'x86/cpu' into x86/asm, to avoid conflict
Merge branch 'x86/urgent' into x86/asm, to pick up fixes
Merge tag 'v4.5-rc7' into x86/asm, to pick up SMAP fix
Merge branch 'x86-asm-for-linus' into tmp.tmp
Jianyu Zhan (1):
x86/entry/traps: Show unhandled signal for i386 in do_trap()
Josh Poimboeuf (2):
x86/asm: Clean up frame pointer macros
x86/asm: Add C versions of frame pointer macros
Matthew Wilcox (1):
x86/mm: Honour passed pgprot in track_pfn_insert() and track_pfn_remap()
Oleg Nesterov (1):
uprobes: __create_xol_area() must nullify xol_mapping.fault
Tony Luck (1):
x86/cpufeature: Create a new synthetic cpu capability for machine check recovery
==========
Documentation/kernel-parameters.txt | 2 +-
Documentation/x86/x86_64/boot-options.txt | 2 +
arch/x86/Kconfig.debug | 10 ---
arch/x86/boot/cpuflags.h | 2 +-
arch/x86/boot/mkcpustr.c | 2 +-
arch/x86/crypto/crc32-pclmul_glue.c | 2 +-
arch/x86/crypto/crc32c-intel_glue.c | 2 +-
arch/x86/crypto/crct10dif-pclmul_glue.c | 2 +-
arch/x86/entry/calling.h | 31 ---------
arch/x86/entry/common.c | 106 ++++++++++++++---------------
arch/x86/entry/entry_32.S | 268 +++++++++++++++++++++++++++++++++++++++++++++++-------------------------
arch/x86/entry/entry_64.S | 286 ++++++++++++++++++++++++++++++----------------------------------------------
arch/x86/entry/entry_64_compat.S | 102 +++++++++++++++++++---------
arch/x86/entry/syscall_32.c | 10 +--
arch/x86/entry/syscall_64.c | 13 ++--
arch/x86/entry/syscalls/syscall_64.tbl | 20 +++---
arch/x86/entry/syscalls/syscalltbl.sh | 58 ++++++++++++++--
arch/x86/entry/vdso/vdso2c.h | 7 --
arch/x86/entry/vdso/vdso32-setup.c | 1 -
arch/x86/entry/vdso/vdso32/system_call.S | 2 +-
arch/x86/entry/vdso/vma.c | 127 +++++++++++++++++++++-------------
arch/x86/entry/vsyscall/vsyscall_gtod.c | 9 ++-
arch/x86/include/asm/alternative.h | 6 --
arch/x86/include/asm/apic.h | 1 -
arch/x86/include/asm/arch_hweight.h | 2 +
arch/x86/include/asm/bitops.h | 36 +++++-----
arch/x86/include/asm/clocksource.h | 9 +--
arch/x86/include/asm/cmpxchg.h | 1 +
arch/x86/include/asm/cpufeature.h | 448 +++++++-----------------------------------------------------------------------------------------------------------------
arch/x86/include/asm/cpufeatures.h | 300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
arch/x86/include/asm/desc_defs.h | 23 +++++++
arch/x86/include/asm/fpu/internal.h | 15 ++--
arch/x86/include/asm/frame.h | 59 ++++++++++------
arch/x86/include/asm/irq_work.h | 2 +-
arch/x86/include/asm/mce.h | 1 +
arch/x86/include/asm/mmu.h | 3 +-
arch/x86/include/asm/msr-index.h | 7 +-
arch/x86/include/asm/mwait.h | 2 +
arch/x86/include/asm/processor.h | 8 ++-
arch/x86/include/asm/proto.h | 15 +++-
arch/x86/include/asm/sighandling.h | 1 -
arch/x86/include/asm/smap.h | 2 +-
arch/x86/include/asm/smp.h | 1 -
arch/x86/include/asm/thread_info.h | 9 ++-
arch/x86/include/asm/tlbflush.h | 1 +
arch/x86/include/asm/uaccess_64.h | 2 +-
arch/x86/include/asm/vdso.h | 3 -
arch/x86/include/asm/vgtod.h | 6 ++
arch/x86/include/uapi/asm/sigcontext.h | 32 ++++++++-
arch/x86/include/uapi/asm/ucontext.h | 53 +++++++++++++--
arch/x86/kernel/apic/apic_numachip.c | 4 +-
arch/x86/kernel/asm-offsets.c | 1 -
arch/x86/kernel/asm-offsets_32.c | 7 +-
arch/x86/kernel/asm-offsets_64.c | 10 +--
arch/x86/kernel/cpu/Makefile | 2 +-
arch/x86/kernel/cpu/centaur.c | 2 +-
arch/x86/kernel/cpu/common.c | 39 +++++++----
arch/x86/kernel/cpu/cyrix.c | 1 +
arch/x86/kernel/cpu/intel.c | 2 +-
arch/x86/kernel/cpu/intel_cacheinfo.c | 2 +-
arch/x86/kernel/cpu/match.c | 2 +-
arch/x86/kernel/cpu/mcheck/mce.c | 13 ++++
arch/x86/kernel/cpu/mkcapflags.sh | 6 +-
arch/x86/kernel/cpu/mtrr/main.c | 2 +-
arch/x86/kernel/cpu/transmeta.c | 2 +-
arch/x86/kernel/e820.c | 1 +
arch/x86/kernel/fpu/xstate.c | 3 +
arch/x86/kernel/ftrace.c | 11 ++-
arch/x86/kernel/head_32.S | 2 +-
arch/x86/kernel/head_64.S | 1 -
arch/x86/kernel/hpet.c | 1 +
arch/x86/kernel/mcount_64.S | 14 ++--
arch/x86/kernel/msr.c | 2 +-
arch/x86/kernel/process.c | 3 +
arch/x86/kernel/signal.c | 127 +++++++++++++++++++++++++++-------
arch/x86/kernel/traps.c | 138 ++++++++++++++++++++++++-------------
arch/x86/kernel/verify_cpu.S | 2 +-
arch/x86/kernel/vm86_32.c | 2 +-
arch/x86/kernel/vmlinux.lds.S | 11 +++
arch/x86/lib/clear_page_64.S | 2 +-
arch/x86/lib/copy_page_64.S | 2 +-
arch/x86/lib/copy_user_64.S | 2 +-
arch/x86/lib/memcpy_64.S | 2 +-
arch/x86/lib/memmove_64.S | 2 +-
arch/x86/lib/memset_64.S | 2 +-
arch/x86/mm/pat.c | 4 +-
arch/x86/mm/setup_nx.c | 1 +
arch/x86/oprofile/op_model_amd.c | 1 -
arch/x86/um/asm/barrier.h | 2 +-
arch/x86/um/sys_call_table_32.c | 4 +-
arch/x86/um/sys_call_table_64.c | 7 +-
arch/x86/um/user-offsets.c | 6 +-
drivers/cpufreq/intel_pstate.c | 2 +-
fs/btrfs/disk-io.c | 2 +-
include/linux/mm.h | 2 +
include/linux/mm_types.h | 22 +++++-
kernel/events/uprobes.c | 1 +
lib/atomic64_test.c | 2 +-
mm/memory.c | 25 ++++++-
mm/mmap.c | 13 ++--
tools/testing/selftests/x86/Makefile | 17 +++--
tools/testing/selftests/x86/check_initial_reg_state.c | 109 +++++++++++++++++++++++++++++
tools/testing/selftests/x86/ptrace_syscall.c | 132 +++++++++++++++++++++++++++++++++++-
tools/testing/selftests/x86/sigreturn.c | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
tools/testing/selftests/x86/syscall_nt.c | 57 +++++++++++++---
105 files changed, 1977 insertions(+), 1199 deletions(-)
create mode 100644 arch/x86/include/asm/cpufeatures.h
create mode 100644 tools/testing/selftests/x86/check_initial_reg_state.c