* Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > On Thu, Jun 21, 2018 at 7:24 PM Ingo Molnar <mingo@xxxxxxxxxx> wrote: > > * Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > > > > native_save_fl() is marked static inline, but by using it as > > > a function pointer in arch/x86/kernel/paravirt.c, it MUST be outlined. > > > > > --- a/arch/x86/include/asm/irqflags.h > > > +++ b/arch/x86/include/asm/irqflags.h > > > @@ -13,7 +13,7 @@ > > > * Interrupt control: > > > */ > > > > > > -static inline unsigned long native_save_fl(void) > > > +extern inline unsigned long native_save_fl(void) > > > { > > > unsigned long flags; > > > > > > > What's the code generation effect of this on say a defconfig kernel vmlinux with > > paravirt enabled? > > Starting with this patch set applied: > $ make CC=gcc-8 -j46 > $ objdump -d vmlinux | grep native_save_fl --context=3 > ffffffff81059140 <native_save_fl>: > ffffffff81059140: 9c pushfq > ffffffff81059141: 58 pop %rax > ffffffff81059142: c3 retq > $ git checkout HEAD~3 > $ make CC=gcc-8 -j46 > $ objdump -d vmlinux | grep native_save_fl --context=3 > ffffffff81079410 <native_save_fl>: > ffffffff81079410: 9c pushfq > ffffffff81079411: 58 pop %rax > ffffffff81079412: c3 retq > > Mainly, this is to prevent the compiler from adding a stack protector > to the outlined version, as the stack protector clobbers %rcx, but > paravirt expects %rcx to be preserved. More info can be found: > https://lkml.org/lkml/2018/5/24/1242-- Ok! Acked-by: Ingo Molnar <mingo@xxxxxxxxxx> What's the planned upstreaming route for these patches/fixes? Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html