x86/retpoline: Cleanup some #ifdefery
On it's own not much of a cleanup but it prepares for more/similar code. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Borislav Petkov <bp@suse.de> Reviewed-by: Borislav Petkov <bp@suse.de> Reviewed-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:
parent
a883d624ae
commit
369ae6ffc4
@ -50,6 +50,13 @@
|
|||||||
# define DISABLE_PTI (1 << (X86_FEATURE_PTI & 31))
|
# define DISABLE_PTI (1 << (X86_FEATURE_PTI & 31))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_RETPOLINE
|
||||||
|
# define DISABLE_RETPOLINE 0
|
||||||
|
#else
|
||||||
|
# define DISABLE_RETPOLINE ((1 << (X86_FEATURE_RETPOLINE & 31)) | \
|
||||||
|
(1 << (X86_FEATURE_RETPOLINE_LFENCE & 31)))
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_INTEL_IOMMU_SVM
|
#ifdef CONFIG_INTEL_IOMMU_SVM
|
||||||
# define DISABLE_ENQCMD 0
|
# define DISABLE_ENQCMD 0
|
||||||
#else
|
#else
|
||||||
@ -82,7 +89,7 @@
|
|||||||
#define DISABLED_MASK8 (DISABLE_TDX_GUEST)
|
#define DISABLED_MASK8 (DISABLE_TDX_GUEST)
|
||||||
#define DISABLED_MASK9 (DISABLE_SGX)
|
#define DISABLED_MASK9 (DISABLE_SGX)
|
||||||
#define DISABLED_MASK10 0
|
#define DISABLED_MASK10 0
|
||||||
#define DISABLED_MASK11 0
|
#define DISABLED_MASK11 (DISABLE_RETPOLINE)
|
||||||
#define DISABLED_MASK12 0
|
#define DISABLED_MASK12 0
|
||||||
#define DISABLED_MASK13 0
|
#define DISABLED_MASK13 0
|
||||||
#define DISABLED_MASK14 0
|
#define DISABLED_MASK14 0
|
||||||
|
@ -120,17 +120,16 @@
|
|||||||
_ASM_PTR " 999b\n\t" \
|
_ASM_PTR " 999b\n\t" \
|
||||||
".popsection\n\t"
|
".popsection\n\t"
|
||||||
|
|
||||||
#ifdef CONFIG_RETPOLINE
|
|
||||||
|
|
||||||
typedef u8 retpoline_thunk_t[RETPOLINE_THUNK_SIZE];
|
typedef u8 retpoline_thunk_t[RETPOLINE_THUNK_SIZE];
|
||||||
|
extern retpoline_thunk_t __x86_indirect_thunk_array[];
|
||||||
|
|
||||||
|
#ifdef CONFIG_RETPOLINE
|
||||||
|
|
||||||
#define GEN(reg) \
|
#define GEN(reg) \
|
||||||
extern retpoline_thunk_t __x86_indirect_thunk_ ## reg;
|
extern retpoline_thunk_t __x86_indirect_thunk_ ## reg;
|
||||||
#include <asm/GEN-for-each-reg.h>
|
#include <asm/GEN-for-each-reg.h>
|
||||||
#undef GEN
|
#undef GEN
|
||||||
|
|
||||||
extern retpoline_thunk_t __x86_indirect_thunk_array[];
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -412,16 +412,15 @@ static void emit_indirect_jump(u8 **pprog, int reg, u8 *ip)
|
|||||||
{
|
{
|
||||||
u8 *prog = *pprog;
|
u8 *prog = *pprog;
|
||||||
|
|
||||||
#ifdef CONFIG_RETPOLINE
|
|
||||||
if (cpu_feature_enabled(X86_FEATURE_RETPOLINE_LFENCE)) {
|
if (cpu_feature_enabled(X86_FEATURE_RETPOLINE_LFENCE)) {
|
||||||
EMIT_LFENCE();
|
EMIT_LFENCE();
|
||||||
EMIT2(0xFF, 0xE0 + reg);
|
EMIT2(0xFF, 0xE0 + reg);
|
||||||
} else if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) {
|
} else if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) {
|
||||||
OPTIMIZER_HIDE_VAR(reg);
|
OPTIMIZER_HIDE_VAR(reg);
|
||||||
emit_jump(&prog, &__x86_indirect_thunk_array[reg], ip);
|
emit_jump(&prog, &__x86_indirect_thunk_array[reg], ip);
|
||||||
} else
|
} else {
|
||||||
#endif
|
EMIT2(0xFF, 0xE0 + reg);
|
||||||
EMIT2(0xFF, 0xE0 + reg);
|
}
|
||||||
|
|
||||||
*pprog = prog;
|
*pprog = prog;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user