[lkml]   [2011]   [Sep]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH 08/13] xen/pvticketlock: disable interrupts while blocking
On 09/07/2011 08:17 PM, Jeremy Fitzhardinge wrote:
> On 09/07/2011 10:09 AM, Avi Kivity wrote:
> > On 09/07/2011 07:52 PM, Don Zickus wrote:
> >> >
> >> > May I ask how? Detecting a back-to-back NMI?
> >>
> >> Pretty boring actually. Currently we execute an NMI handler until
> >> one of
> >> them returns handled. Then we stop. This may cause us to miss an
> >> NMI in
> >> the case of multiple NMIs at once. Now we are changing it to execute
> >> _all_ the handlers to make sure we didn't miss one.
> >
> > That's going to be pretty bad for kvm - those handlers become a lot
> > more expensive since they involve reading MSRs.
> How often are you going to get NMIs in a kvm guest?

We'll soon have the perf-based watchdog firing every 60s worth of
instructions or so. But if we implement your new kick pvop using NMI
then it can be _very_ often.

> > Even worse if we start using NMIs as a wakeup for pv spinlocks as
> > provided by this patchset.
> Hm, I'm interested to know what you're thinking in more detail. Can you
> leave an NMI pending before you block in the same way you can with
> "sti;halt" with normal interrupts?

Nope. But you can do

if (regs->rip in critical section)
regs->rip = after_halt;

and effectively emulate it. The critical section is something like

if (woken_up)
goto critical_section_end;

> I was thinking you might want to do something with monitor/mwait to
> implement the blocking/kick ops. (Handwave)

monitor/mwait are incredibly expensive to virtualize since they require
write-protecting a page, IPIs flying everywhere and flushing tlbs, not
to mention my lovely hugepages being broken up mercilessly.

I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.

 \ /
  Last update: 2011-09-07 19:45    [W:0.121 / U:3.044 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site