Re: [PATCH 08/13] xen/pvticketlock: disable interrupts while blocking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

    critical_section_start:
        if (woken_up)
            goto critical_section_end;
        hlt
    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.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux