Messages in this thread | | | Date | Tue, 26 Jun 2018 09:13:25 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH v6 3/3] x86: paravirt: make native_save_fl extern inline |
| |
* Nick Desaulniers <ndesaulniers@google.com> wrote:
> On Thu, Jun 21, 2018 at 7:24 PM Ingo Molnar <mingo@kernel.org> wrote: > > * Nick Desaulniers <ndesaulniers@google.com> 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@kernel.org>
What's the planned upstreaming route for these patches/fixes?
Thanks,
Ingo
| |