On Wed, Oct 20, 2021 at 05:18:08PM -0700, Josh Poimboeuf wrote: > On Wed, Oct 20, 2021 at 05:07:53PM -0700, Alexei Starovoitov wrote: > > On Wed, Oct 20, 2021 at 12:44:56PM +0200, Peter Zijlstra wrote: > > > + > > > + if (cpu_feature_enabled(X86_FEATURE_RETPOLINE_AMD)) { > > > + EMIT_LFENCE(); > > > + EMIT2(0xFF, 0xE0 + reg); > > > + } else if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) { > > > + emit_jump(&prog, reg_thunk[reg], ip); > > > + } else > > > > One more question. > > What's a deal with AMD? I thought the retpoline is effective on it as well. > > lfence is an optimization or retpoline turned out to be not enough > > in some cases? > > Yes, it's basically an optimization. AMD recommends it presumably > because it's quite a bit faster than a retpoline. > > According to AMD it shrinks the speculative execution window enough so > that Spectre v2 isn't a threat. Right, also note that we've been using alternatives to patch the thunk to lfence;jmp for AMD pretty much forever. Inlining it is better tho; just a shame clang seems to insist on r11, which means we cannot fit it in the thunk call site for them :/