On Sun, 2018-01-07 at 23:06 -0600, Josh Poimboeuf wrote:
> 
> Here's the use case I had in mind before.  With paravirt,
> 
>   ENABLE_INTERRUPTS(CLBR_NONE)
> 
> becomes
> 
>   push  %rax
>   call  *pv_irq_ops.irq_enable
>   pop   %rax
> 
> and I wanted to apply those instructions with an alternative.  It
> doesn't work currently because the 'call' isn't first.

I believe Borislav has made that work... however, if you're literally
doing the above then you'd be introducing new indirect branches which
is precisely what I've been trying to eliminate.

I believe I was told to stop prodding at pvops and just trust that they
all get turned into *direct* jumps at runtime. For example the above
call would not be literally 'call *pv_irq_ops.irq_enable', because by
the time the pvops are patched we'd *know* the final value of the
irq_enable method, and we'd turn it into a *direct* call instead.

Do I need to start looking at pvops again?

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to