Re: [PATCH 4/9] x86/alternative: Implement .retpoline_sites support

From: Peter Zijlstra
Date: Tue Oct 19 2021 - 05:41:14 EST


On Mon, Oct 18, 2021 at 11:06:35PM +0000, Alexander Lobakin wrote:
> From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Date: Fri, 15 Oct 2021 18:56:35 +0200
>
> Hi,
>
> Gave it a spin with Clang/LLVM, and

Just your normal clang build, not some fancy LTO ? eg. make CC=clang.


> > > > + target = addr + insn->length + insn->immediate.value;
> > > > + reg = (target - &__x86_indirect_thunk_rax) /
> > > > + (&__x86_indirect_thunk_rcx - &__x86_indirect_thunk_rax);
>
> this triggers
>

> > > > +
> > > > + if (WARN_ON_ONCE(reg & ~0xf))
> > > > + return -1;
>
> this:
>
> WARN in patch_retpoline:408: addr pcibios_scan_specific_bus+0x196/0x200, op 0xe8, reg 0xb88ca
> WARN in patch_retpoline:408: addr xen_pv_teardown_msi_irqs+0x8d/0x120, op 0xe8, reg 0xb88ca
> WARN in patch_retpoline:408: addr __mptcp_sockopt_sync+0x7e/0x200, op 0xe8, reg 0xb88ca
> [...]
> (thousands of them, but op == 0xe8 && reg == 0xb88ca are always the same)
>
> I know this reg calculation is about to be replaced, but anyway ;)

Well, I was sorta hoping to keep that with something like:

https://lkml.kernel.org/r/YWgA+vbWCdGLZhq5@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Anyway, let me try and reproduce.