History

x86/retpoline: Cleanup some #ifdefery

On it's own not much of a cleanup but it prepares for more/similar code.

Peter Zijlstra committed 4 years ago

Commit 369ae6f1 parent a883d623 files · +14 −9Browse files

Unified · Split

3 files
  1. arch/x86/include/asm/disabled-features.h +8 −1
  2. arch/x86/include/asm/nospec-branch.h +3 −4
  3. arch/x86/net/bpf_jit_comp.c +3 −4
arch/x86/include/asm/disabled-features.h+8−1
@@ -50,6 +50,13 @@ · 49 unmodified lines
50# define DISABLE_PTI (1 << (X86_FEATURE_PTI & 31))50# define DISABLE_PTI (1 << (X86_FEATURE_PTI & 31))
51#endif51#endif
52 52
53#ifdef CONFIG_RETPOLINE
54# define DISABLE_RETPOLINE 0
55#else
56# define DISABLE_RETPOLINE ((1 << (X86_FEATURE_RETPOLINE & 31)) | \
57 (1 << (X86_FEATURE_RETPOLINE_LFENCE & 31)))
58#endif
59
53#ifdef CONFIG_INTEL_IOMMU_SVM60#ifdef CONFIG_INTEL_IOMMU_SVM
54# define DISABLE_ENQCMD 061# define DISABLE_ENQCMD 0
55#else62#else
@@ -82,7 +89,7 @@ · 26 unmodified lines
82#define DISABLED_MASK8 (DISABLE_TDX_GUEST)89#define DISABLED_MASK8 (DISABLE_TDX_GUEST)
83#define DISABLED_MASK9 (DISABLE_SGX)90#define DISABLED_MASK9 (DISABLE_SGX)
84#define DISABLED_MASK10 091#define DISABLED_MASK10 0
85#define DISABLED_MASK11 092#define DISABLED_MASK11 (DISABLE_RETPOLINE)
86#define DISABLED_MASK12 093#define DISABLED_MASK12 0
87#define DISABLED_MASK13 094#define DISABLED_MASK13 0
88#define DISABLED_MASK14 095#define DISABLED_MASK14 0
arch/x86/include/asm/nospec-branch.h+3−4
@@ -120,17 +120,16 @@ · 119 unmodified lines
120 _ASM_PTR " 999b\n\t" \120 _ASM_PTR " 999b\n\t" \
121 ".popsection\n\t"121 ".popsection\n\t"
122 122
123#ifdef CONFIG_RETPOLINE
124
125typedef u8 retpoline_thunk_t[RETPOLINE_THUNK_SIZE];123typedef u8 retpoline_thunk_t[RETPOLINE_THUNK_SIZE];
124extern retpoline_thunk_t __x86_indirect_thunk_array[];
125
126#ifdef CONFIG_RETPOLINE
126 127
127#define GEN(reg) \128#define GEN(reg) \
128 extern retpoline_thunk_t __x86_indirect_thunk_ ## reg;129 extern retpoline_thunk_t __x86_indirect_thunk_ ## reg;
129#include <asm/GEN-for-each-reg.h>130#include <asm/GEN-for-each-reg.h>
130#undef GEN131#undef GEN
131 132
132extern retpoline_thunk_t __x86_indirect_thunk_array[];
133
134#ifdef CONFIG_X86_64133#ifdef CONFIG_X86_64
135 134
136/*135/*
arch/x86/net/bpf_jit_comp.c+3−4
@@ -412,16 +412,15 @@ static void emit_indirect_jump(u8 **pprog, int reg, u8 *ip) · 411 unmodified lines
412{412{
413 u8 *prog = *pprog;413 u8 *prog = *pprog;
414 414
415#ifdef CONFIG_RETPOLINE
416 if (cpu_feature_enabled(X86_FEATURE_RETPOLINE_LFENCE)) {415 if (cpu_feature_enabled(X86_FEATURE_RETPOLINE_LFENCE)) {
417 EMIT_LFENCE();416 EMIT_LFENCE();
418 EMIT2(0xFF, 0xE0 + reg);417 EMIT2(0xFF, 0xE0 + reg);
419 } else if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) {418 } else if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) {
420 OPTIMIZER_HIDE_VAR(reg);419 OPTIMIZER_HIDE_VAR(reg);
421 emit_jump(&prog, &__x86_indirect_thunk_array[reg], ip);420 emit_jump(&prog, &__x86_indirect_thunk_array[reg], ip);
422 } else421 } else {
423#endif422 EMIT2(0xFF, 0xE0 + reg);
424 EMIT2(0xFF, 0xE0 + reg);423 }
425 424
426 *pprog = prog;425 *pprog = prog;
427}426}