Merge tag 'x86-splitlock-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 31 Mar 2020 02:35:52 +0000 (19:35 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 31 Mar 2020 02:35:52 +0000 (19:35 -0700)
Pull x86 splitlock updates from Thomas Gleixner:
 "Support for 'split lock' detection:

  Atomic operations (lock prefixed instructions) which span two cache
  lines have to acquire the global bus lock. This is at least 1k cycles
  slower than an atomic operation within a cache line and disrupts
  performance on other cores. Aside of performance disruption this is a
  unpriviledged form of DoS.

  Some newer CPUs have the capability to raise an #AC trap when such an
  operation is attempted. The detection is by default enabled in warning
  mode which will warn once when a user space application is caught. A
  command line option allows to disable the detection or to select fatal
  mode which will terminate offending applications with SIGBUS"

* tag 'x86-splitlock-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/split_lock: Avoid runtime reads of the TEST_CTRL MSR
  x86/split_lock: Rework the initialization flow of split lock detection
  x86/split_lock: Enable split lock detection by kernel

1  2 
Documentation/admin-guide/kernel-parameters.txt
arch/x86/include/asm/cpufeatures.h
arch/x86/include/asm/msr-index.h
arch/x86/include/asm/thread_info.h
arch/x86/kernel/cpu/common.c
arch/x86/kernel/process.c
arch/x86/kernel/traps.c

Simple merge
Simple merge
@@@ -92,6 -92,8 +92,7 @@@ struct thread_info 
  #define TIF_NOCPUID           15      /* CPUID is not accessible in userland */
  #define TIF_NOTSC             16      /* TSC is not accessible in userland */
  #define TIF_IA32              17      /* IA32 compatibility process */
 -#define TIF_NOHZ              19      /* in adaptive nohz mode */
+ #define TIF_SLD                       18      /* Restore split lock detection on context switch */
  #define TIF_MEMDIE            20      /* is terminating due to OOM killer */
  #define TIF_POLLING_NRFLAG    21      /* idle is polling for TIF_NEED_RESCHED */
  #define TIF_IO_BITMAP         22      /* uses I/O bitmap */
  #define _TIF_NOCPUID          (1 << TIF_NOCPUID)
  #define _TIF_NOTSC            (1 << TIF_NOTSC)
  #define _TIF_IA32             (1 << TIF_IA32)
 -#define _TIF_NOHZ             (1 << TIF_NOHZ)
+ #define _TIF_SLD              (1 << TIF_SLD)
  #define _TIF_POLLING_NRFLAG   (1 << TIF_POLLING_NRFLAG)
  #define _TIF_IO_BITMAP                (1 << TIF_IO_BITMAP)
  #define _TIF_FORCED_TF                (1 << TIF_FORCED_TF)
Simple merge
Simple merge
Simple merge