On Wed, Aug 17, 2016 at 2:43 PM, Andy Lutomirski <l...@amacapital.net> wrote: > > It shouldn't be *too* bad, since xen_restore_fl only affects "IF". > And even if native_restore_fl needs to be able to turn IRQs off as > well as on, we can just do: > > if (likely(flags & X86_EFLAGS_IF)) > sti(); > else > cli(); > > at some cost to code size but hopefully little to no runtime cost for > the sane cases.
No, that would be horrible for the case where we had an irq spinlock in an irq-region. Then we'd have a pointless "cli" there. So I'd rather just make sure that only the spinlock code actually uses native_restore_fl(). And yes, the patch works at least minimally, since I'm writing this with a kernel compiled with that. Of course, somebody really should do timings on modern CPU's (in cpl0, comparing native_fl() that enables interrupts with a popf) Linus