Re: [PATCH 03/24] x86/paravirt: Annotate indirect calls

From: Peter Zijlstra
Date: Mon Jan 29 2018 - 13:17:33 EST


On Mon, Jan 29, 2018 at 11:58:58AM -0600, Josh Poimboeuf wrote:
> On Tue, Jan 23, 2018 at 04:25:42PM +0100, Peter Zijlstra wrote:
> > Paravirt emits indirect calls which get flagged by objtool retpoline
> > checks, annotate it away because all these indirect calls will be
> > patched out before we start userspace.
> >
> > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> > ---
> > arch/x86/include/asm/paravirt.h | 22 ++++++++++++++++++----
> > arch/x86/include/asm/paravirt_types.h | 7 ++++++-
> > 2 files changed, 24 insertions(+), 5 deletions(-)
> >
> > --- a/arch/x86/include/asm/paravirt.h
> > +++ b/arch/x86/include/asm/paravirt.h
> > @@ -828,6 +828,12 @@ extern void default_banner(void);
> > .short clobbers; \
> > .popsection
> >
> > +#define PARA_RETPOLINE_SAFE \
> > + 773:; \
> > + .pushsection .discard.retpoline_safe; \
> > + _ASM_PTR 773b; \
> > + .popsection
>
> Why does paravirt have its own version of this macro?

Every time I touch paravirt.h I land in header hell :/ Maybe it can be
made to work, but I was too scared to try this time.