x86-prepare-inline-asm-for-straight-line-speculation.patch
objtool-add-straight-line-speculation-validation.patch
x86-alternative-relax-text_poke_bp-constraint.patch
-x86-retpoline-remove-unused-replacement-symbols.patch
-x86-asm-fixup-odd-gen-for-each-reg.h-usage.patch
-x86-retpoline-move-the-retpoline-thunk-declarations-.patch
-x86-retpoline-create-a-retpoline-thunk-array.patch
kbuild-move-objtool_args-back-to-scripts-makefile.bu.patch
x86-add-straight-line-speculation-mitigation.patch
tools-arch-update-arch-x86-lib-mem-cpy-set-_64.s-cop.patch
+++ /dev/null
-From 189c8a9de6419f817296067f6dd69b8cda5bc71f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 26 Oct 2021 14:01:39 +0200
-Subject: x86/asm: Fixup odd GEN-for-each-reg.h usage
-
-From: Peter Zijlstra <peterz@infradead.org>
-
-[ Upstream commit b6d3d9944bd7c9e8c06994ead3c9952f673f2a66 ]
-
-Currently GEN-for-each-reg.h usage leaves GEN defined, relying on any
-subsequent usage to start with #undef, which is rude.
-
-Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
-Reviewed-by: Borislav Petkov <bp@suse.de>
-Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
-Tested-by: Alexei Starovoitov <ast@kernel.org>
-Link: https://lore.kernel.org/r/20211026120310.041792350@infradead.org
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/x86/include/asm/asm-prototypes.h | 2 +-
- arch/x86/lib/retpoline.S | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/arch/x86/include/asm/asm-prototypes.h b/arch/x86/include/asm/asm-prototypes.h
-index a28c5cab893d..a2bed09d3c11 100644
---- a/arch/x86/include/asm/asm-prototypes.h
-+++ b/arch/x86/include/asm/asm-prototypes.h
-@@ -19,9 +19,9 @@ extern void cmpxchg8b_emu(void);
-
- #ifdef CONFIG_RETPOLINE
-
--#undef GEN
- #define GEN(reg) \
- extern asmlinkage void __x86_indirect_thunk_ ## reg (void);
- #include <asm/GEN-for-each-reg.h>
-+#undef GEN
-
- #endif /* CONFIG_RETPOLINE */
-diff --git a/arch/x86/lib/retpoline.S b/arch/x86/lib/retpoline.S
-index 7e0e66efa932..8077b5880d71 100644
---- a/arch/x86/lib/retpoline.S
-+++ b/arch/x86/lib/retpoline.S
-@@ -55,10 +55,10 @@ SYM_FUNC_END(__x86_indirect_thunk_\reg)
- #define __EXPORT_THUNK(sym) _ASM_NOKPROBE(sym); EXPORT_SYMBOL(sym)
- #define EXPORT_THUNK(reg) __EXPORT_THUNK(__x86_indirect_thunk_ ## reg)
-
--#undef GEN
- #define GEN(reg) THUNK reg
- #include <asm/GEN-for-each-reg.h>
--
- #undef GEN
-+
- #define GEN(reg) EXPORT_THUNK(reg)
- #include <asm/GEN-for-each-reg.h>
-+#undef GEN
---
-2.35.1
-
+++ /dev/null
-From 1fb9bdd7cd41ff5e110234ea833b6206accba40b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 26 Oct 2021 14:01:41 +0200
-Subject: x86/retpoline: Create a retpoline thunk array
-
-From: Peter Zijlstra <peterz@infradead.org>
-
-[ Upstream commit 1a6f74429c42a3854980359a758e222005712aee ]
-
-Stick all the retpolines in a single symbol and have the individual
-thunks as inner labels, this should guarantee thunk order and layout.
-
-Previously there were 16 (or rather 15 without rsp) separate symbols and
-a toolchain might reasonably expect it could displace them however it
-liked, with disregard for their relative position.
-
-However, now they're part of a larger symbol. Any change to their
-relative position would disrupt this larger _array symbol and thus not
-be sound.
-
-This is the same reasoning used for data symbols. On their own there
-is no guarantee about their relative position wrt to one aonther, but
-we're still able to do arrays because an array as a whole is a single
-larger symbol.
-
-Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
-Reviewed-by: Borislav Petkov <bp@suse.de>
-Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
-Tested-by: Alexei Starovoitov <ast@kernel.org>
-Link: https://lore.kernel.org/r/20211026120310.169659320@infradead.org
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/x86/include/asm/nospec-branch.h | 8 +++++++-
- arch/x86/lib/retpoline.S | 14 +++++++++-----
- 2 files changed, 16 insertions(+), 6 deletions(-)
-
-diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h
-index ff062c479298..59b6ef67995d 100644
---- a/arch/x86/include/asm/nospec-branch.h
-+++ b/arch/x86/include/asm/nospec-branch.h
-@@ -12,6 +12,8 @@
- #include <asm/msr-index.h>
- #include <asm/unwind_hints.h>
-
-+#define RETPOLINE_THUNK_SIZE 32
-+
- /*
- * Fill the CPU return stack buffer.
- *
-@@ -120,11 +122,15 @@
-
- #ifdef CONFIG_RETPOLINE
-
-+typedef u8 retpoline_thunk_t[RETPOLINE_THUNK_SIZE];
-+
- #define GEN(reg) \
-- extern asmlinkage void __x86_indirect_thunk_ ## reg (void);
-+ extern retpoline_thunk_t __x86_indirect_thunk_ ## reg;
- #include <asm/GEN-for-each-reg.h>
- #undef GEN
-
-+extern retpoline_thunk_t __x86_indirect_thunk_array[];
-+
- #ifdef CONFIG_X86_64
-
- /*
-diff --git a/arch/x86/lib/retpoline.S b/arch/x86/lib/retpoline.S
-index 8077b5880d71..8904c076a1df 100644
---- a/arch/x86/lib/retpoline.S
-+++ b/arch/x86/lib/retpoline.S
-@@ -28,16 +28,14 @@
-
- .macro THUNK reg
-
-- .align 32
--
--SYM_FUNC_START(__x86_indirect_thunk_\reg)
-+ .align RETPOLINE_THUNK_SIZE
-+SYM_INNER_LABEL(__x86_indirect_thunk_\reg, SYM_L_GLOBAL)
-+ UNWIND_HINT_EMPTY
-
- ALTERNATIVE_2 __stringify(ANNOTATE_RETPOLINE_SAFE; jmp *%\reg), \
- __stringify(RETPOLINE \reg), X86_FEATURE_RETPOLINE, \
- __stringify(lfence; ANNOTATE_RETPOLINE_SAFE; jmp *%\reg), X86_FEATURE_RETPOLINE_LFENCE
-
--SYM_FUNC_END(__x86_indirect_thunk_\reg)
--
- .endm
-
- /*
-@@ -55,10 +53,16 @@ SYM_FUNC_END(__x86_indirect_thunk_\reg)
- #define __EXPORT_THUNK(sym) _ASM_NOKPROBE(sym); EXPORT_SYMBOL(sym)
- #define EXPORT_THUNK(reg) __EXPORT_THUNK(__x86_indirect_thunk_ ## reg)
-
-+ .align RETPOLINE_THUNK_SIZE
-+SYM_CODE_START(__x86_indirect_thunk_array)
-+
- #define GEN(reg) THUNK reg
- #include <asm/GEN-for-each-reg.h>
- #undef GEN
-
-+ .align RETPOLINE_THUNK_SIZE
-+SYM_CODE_END(__x86_indirect_thunk_array)
-+
- #define GEN(reg) EXPORT_THUNK(reg)
- #include <asm/GEN-for-each-reg.h>
- #undef GEN
---
-2.35.1
-
+++ /dev/null
-From c67d441c7f8b71db4409ed45c361406c30bc080a Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 26 Oct 2021 14:01:40 +0200
-Subject: x86/retpoline: Move the retpoline thunk declarations to
- nospec-branch.h
-
-From: Peter Zijlstra <peterz@infradead.org>
-
-[ Upstream commit 6fda8a38865607db739be3e567a2387376222dbd ]
-
-Because it makes no sense to split the retpoline gunk over multiple
-headers.
-
-Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
-Reviewed-by: Borislav Petkov <bp@suse.de>
-Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
-Tested-by: Alexei Starovoitov <ast@kernel.org>
-Link: https://lore.kernel.org/r/20211026120310.106290934@infradead.org
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/x86/include/asm/asm-prototypes.h | 8 --------
- arch/x86/include/asm/nospec-branch.h | 7 +++++++
- arch/x86/net/bpf_jit_comp.c | 1 -
- 3 files changed, 7 insertions(+), 9 deletions(-)
-
-diff --git a/arch/x86/include/asm/asm-prototypes.h b/arch/x86/include/asm/asm-prototypes.h
-index a2bed09d3c11..8f80de627c60 100644
---- a/arch/x86/include/asm/asm-prototypes.h
-+++ b/arch/x86/include/asm/asm-prototypes.h
-@@ -17,11 +17,3 @@
- extern void cmpxchg8b_emu(void);
- #endif
-
--#ifdef CONFIG_RETPOLINE
--
--#define GEN(reg) \
-- extern asmlinkage void __x86_indirect_thunk_ ## reg (void);
--#include <asm/GEN-for-each-reg.h>
--#undef GEN
--
--#endif /* CONFIG_RETPOLINE */
-diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h
-index b3dd514f80a0..ff062c479298 100644
---- a/arch/x86/include/asm/nospec-branch.h
-+++ b/arch/x86/include/asm/nospec-branch.h
-@@ -5,6 +5,7 @@
-
- #include <linux/static_key.h>
- #include <linux/objtool.h>
-+#include <linux/linkage.h>
-
- #include <asm/alternative.h>
- #include <asm/cpufeatures.h>
-@@ -118,6 +119,12 @@
- ".popsection\n\t"
-
- #ifdef CONFIG_RETPOLINE
-+
-+#define GEN(reg) \
-+ extern asmlinkage void __x86_indirect_thunk_ ## reg (void);
-+#include <asm/GEN-for-each-reg.h>
-+#undef GEN
-+
- #ifdef CONFIG_X86_64
-
- /*
-diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
-index d99434dc215c..f59367bea03a 100644
---- a/arch/x86/net/bpf_jit_comp.c
-+++ b/arch/x86/net/bpf_jit_comp.c
-@@ -15,7 +15,6 @@
- #include <asm/set_memory.h>
- #include <asm/nospec-branch.h>
- #include <asm/text-patching.h>
--#include <asm/asm-prototypes.h>
-
- static u8 *emit_code(u8 *ptr, u32 bytes, unsigned int len)
- {
---
-2.35.1
-
+++ /dev/null
-From 4dfd0ccdfe9580b2fb11accf61246dc01d0321f7 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 26 Oct 2021 14:01:37 +0200
-Subject: x86/retpoline: Remove unused replacement symbols
-
-From: Peter Zijlstra <peterz@infradead.org>
-
-[ Upstream commit 4fe79e710d9574a14993f8b4e16b7252da72d5e8 ]
-
-Now that objtool no longer creates alternatives, these replacement
-symbols are no longer needed, remove them.
-
-Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
-Reviewed-by: Borislav Petkov <bp@suse.de>
-Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
-Tested-by: Alexei Starovoitov <ast@kernel.org>
-Link: https://lore.kernel.org/r/20211026120309.915051744@infradead.org
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/x86/include/asm/asm-prototypes.h | 10 -------
- arch/x86/lib/retpoline.S | 42 ---------------------------
- 2 files changed, 52 deletions(-)
-
-diff --git a/arch/x86/include/asm/asm-prototypes.h b/arch/x86/include/asm/asm-prototypes.h
-index 4cb726c71ed8..a28c5cab893d 100644
---- a/arch/x86/include/asm/asm-prototypes.h
-+++ b/arch/x86/include/asm/asm-prototypes.h
-@@ -24,14 +24,4 @@ extern void cmpxchg8b_emu(void);
- extern asmlinkage void __x86_indirect_thunk_ ## reg (void);
- #include <asm/GEN-for-each-reg.h>
-
--#undef GEN
--#define GEN(reg) \
-- extern asmlinkage void __x86_indirect_alt_call_ ## reg (void);
--#include <asm/GEN-for-each-reg.h>
--
--#undef GEN
--#define GEN(reg) \
-- extern asmlinkage void __x86_indirect_alt_jmp_ ## reg (void);
--#include <asm/GEN-for-each-reg.h>
--
- #endif /* CONFIG_RETPOLINE */
-diff --git a/arch/x86/lib/retpoline.S b/arch/x86/lib/retpoline.S
-index d7455ee92f84..7e0e66efa932 100644
---- a/arch/x86/lib/retpoline.S
-+++ b/arch/x86/lib/retpoline.S
-@@ -40,36 +40,6 @@ SYM_FUNC_END(__x86_indirect_thunk_\reg)
-
- .endm
-
--/*
-- * This generates .altinstr_replacement symbols for use by objtool. They,
-- * however, must not actually live in .altinstr_replacement since that will be
-- * discarded after init, but module alternatives will also reference these
-- * symbols.
-- *
-- * Their names matches the "__x86_indirect_" prefix to mark them as retpolines.
-- */
--.macro ALT_THUNK reg
--
-- .align 1
--
--SYM_FUNC_START_NOALIGN(__x86_indirect_alt_call_\reg)
-- ANNOTATE_RETPOLINE_SAFE
--1: call *%\reg
--2: .skip 5-(2b-1b), 0x90
--SYM_FUNC_END(__x86_indirect_alt_call_\reg)
--
--STACK_FRAME_NON_STANDARD(__x86_indirect_alt_call_\reg)
--
--SYM_FUNC_START_NOALIGN(__x86_indirect_alt_jmp_\reg)
-- ANNOTATE_RETPOLINE_SAFE
--1: jmp *%\reg
--2: .skip 5-(2b-1b), 0x90
--SYM_FUNC_END(__x86_indirect_alt_jmp_\reg)
--
--STACK_FRAME_NON_STANDARD(__x86_indirect_alt_jmp_\reg)
--
--.endm
--
- /*
- * Despite being an assembler file we can't just use .irp here
- * because __KSYM_DEPS__ only uses the C preprocessor and would
-@@ -92,15 +62,3 @@ STACK_FRAME_NON_STANDARD(__x86_indirect_alt_jmp_\reg)
- #undef GEN
- #define GEN(reg) EXPORT_THUNK(reg)
- #include <asm/GEN-for-each-reg.h>
--
--#undef GEN
--#define GEN(reg) ALT_THUNK reg
--#include <asm/GEN-for-each-reg.h>
--
--#undef GEN
--#define GEN(reg) __EXPORT_THUNK(__x86_indirect_alt_call_ ## reg)
--#include <asm/GEN-for-each-reg.h>
--
--#undef GEN
--#define GEN(reg) __EXPORT_THUNK(__x86_indirect_alt_jmp_ ## reg)
--#include <asm/GEN-for-each-reg.h>
---
-2.35.1
-