Files
linux/include/linux
Linus Torvalds 94a855111e Merge tag 'x86_core_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 core updates from Borislav Petkov:

 - Add the call depth tracking mitigation for Retbleed which has been
   long in the making. It is a lighterweight software-only fix for
   Skylake-based cores where enabling IBRS is a big hammer and causes a
   significant performance impact.

   What it basically does is, it aligns all kernel functions to 16 bytes
   boundary and adds a 16-byte padding before the function, objtool
   collects all functions' locations and when the mitigation gets
   applied, it patches a call accounting thunk which is used to track
   the call depth of the stack at any time.

   When that call depth reaches a magical, microarchitecture-specific
   value for the Return Stack Buffer, the code stuffs that RSB and
   avoids its underflow which could otherwise lead to the Intel variant
   of Retbleed.

   This software-only solution brings a lot of the lost performance
   back, as benchmarks suggest:

       https://lore.kernel.org/all/20220915111039.092790446@infradead.org/

   That page above also contains a lot more detailed explanation of the
   whole mechanism

 - Implement a new control flow integrity scheme called FineIBT which is
   based on the software kCFI implementation and uses hardware IBT
   support where present to annotate and track indirect branches using a
   hash to validate them

 - Other misc fixes and cleanups

* tag 'x86_core_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (80 commits)
  x86/paravirt: Use common macro for creating simple asm paravirt functions
  x86/paravirt: Remove clobber bitmask from .parainstructions
  x86/debug: Include percpu.h in debugreg.h to get DECLARE_PER_CPU() et al
  x86/cpufeatures: Move X86_FEATURE_CALL_DEPTH from bit 18 to bit 19 of word 11, to leave space for WIP X86_FEATURE_SGX_EDECCSSA bit
  x86/Kconfig: Enable kernel IBT by default
  x86,pm: Force out-of-line memcpy()
  objtool: Fix weak hole vs prefix symbol
  objtool: Optimize elf_dirty_reloc_sym()
  x86/cfi: Add boot time hash randomization
  x86/cfi: Boot time selection of CFI scheme
  x86/ibt: Implement FineIBT
  objtool: Add --cfi to generate the .cfi_sites section
  x86: Add prefix symbols for function padding
  objtool: Add option to generate prefix symbols
  objtool: Avoid O(bloody terrible) behaviour -- an ode to libelf
  objtool: Slice up elf_create_section_symbol()
  kallsyms: Revert "Take callthunks into account"
  x86: Unconfuse CONFIG_ and X86_FEATURE_ namespaces
  x86/retpoline: Fix crash printing warning
  x86/paravirt: Fix a !PARAVIRT build warning
  ...
2022-12-14 15:03:00 -08:00
..
2022-10-27 13:23:43 +02:00
2022-11-04 12:59:25 +02:00
2022-12-11 21:25:58 +01:00
2022-05-22 20:44:29 +01:00
2022-07-05 20:25:39 +02:00
2022-12-06 10:18:27 -07:00
2022-09-26 12:19:12 -07:00
2022-12-07 09:43:12 -07:00
2022-12-08 18:25:31 -08:00
2022-09-26 19:46:29 -07:00
2022-09-26 10:13:13 -07:00
2022-09-26 10:13:13 -07:00
2022-09-15 09:32:06 -07:00
2022-12-02 18:12:40 +08:00
2022-11-18 09:14:10 +01:00
2022-12-11 18:12:17 -08:00
2022-06-28 10:37:25 -03:00
2022-10-20 10:13:30 +02:00
2022-07-01 14:53:01 +02:00
2022-10-24 12:30:26 +03:00
2022-10-03 14:02:45 -07:00
2022-06-09 21:53:09 -07:00
2022-06-09 21:53:12 -07:00
2022-11-11 18:18:05 -08:00
2022-09-01 18:04:43 +02:00
2022-11-29 09:09:17 +11:00
2022-06-27 06:29:12 -06:00
2022-09-08 12:59:00 -06:00
2022-09-26 13:31:20 +02:00
2022-11-15 00:42:02 -08:00
2022-12-11 19:30:20 -08:00
2022-09-01 18:08:44 +02:00
2022-07-17 17:31:38 -07:00
2022-10-03 14:03:19 -07:00
2022-05-02 14:06:20 -06:00
2022-05-03 16:09:03 -04:00
2022-11-09 19:28:49 -08:00
2022-06-19 10:38:26 +01:00
2022-07-27 14:04:52 +02:00
2022-04-28 23:16:14 -07:00
2022-08-02 12:34:04 -04:00
2022-09-01 17:39:49 -04:00
2022-08-22 14:26:30 +01:00
2022-08-09 14:11:34 -04:00
2022-07-29 20:16:58 -04:00
2022-10-16 17:58:54 -05:00
2022-10-03 17:34:32 -07:00
2022-09-26 19:46:27 -07:00
2022-10-04 20:52:38 +02:00
2022-10-20 10:13:30 +02:00
2022-10-23 18:06:54 -04:00
2022-11-22 16:36:27 +02:00
2022-10-21 10:11:00 -07:00
2022-05-22 21:03:01 +01:00
2022-04-07 12:53:54 +02:00
2022-06-27 14:41:31 +02:00
2022-12-09 19:47:41 -08:00
2022-11-29 15:00:06 -08:00
2022-05-08 01:33:08 -07:00
2022-09-07 12:42:25 +01:00
2022-12-11 18:12:19 -08:00
2022-09-29 15:20:29 +02:00
2022-04-11 19:18:27 -06:00
2022-09-22 16:12:34 +02:00
2022-09-22 16:12:34 +02:00
2022-08-31 13:37:32 +02:00
2022-08-28 16:52:28 +01:00
2022-12-12 11:39:12 +01:00
2022-10-07 09:32:40 -04:00
2022-06-13 09:54:52 -07:00
2022-09-26 19:46:18 -07:00
2022-07-10 21:17:30 -04:00