[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.030 / U:3.504 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site