WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH 08/13] xen/pvticketlock: disable interrupts while

To: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Subject: [Xen-devel] Re: [PATCH 08/13] xen/pvticketlock: disable interrupts while blocking
From: Avi Kivity <avi@xxxxxxxxxx>
Date: Wed, 07 Sep 2011 20:41:10 +0300
Cc: Don Zickus <dzickus@xxxxxxxxxx>, Marcelo Tosatti <mtosatti@xxxxxxxxxx>, Nick Piggin <npiggin@xxxxxxxxx>, KVM <kvm@xxxxxxxxxxxxxxx>, Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>, the arch/x86 maintainers <x86@xxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>, Andi Kleen <andi@xxxxxxxxxxxxxx>, Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, Ingo Molnar <mingo@xxxxxxx>, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, Xen Devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 07 Sep 2011 10:43:56 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4E67A71A.5070903@xxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <1314996468.8255.0.camel@twins> <4E614FBD.2030509@xxxxxxxx> <20110906151408.GA7459@xxxxxxxxxx> <4E66615E.8070806@xxxxxxxx> <20110906182758.GR5795@xxxxxxxxxx> <4E66EF86.9070200@xxxxxxxxxx> <20110907134411.GV5795@xxxxxxxxxx> <4E678992.5050709@xxxxxxxxxx> <20110907155657.GX5795@xxxxxxxxxx> <4E679AF4.50209@xxxxxxxxxx> <20110907165203.GQ6838@xxxxxxxxxx> <4E67A551.4000502@xxxxxxxxxx> <4E67A71A.5070903@xxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20110816 Thunderbird/6.0
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.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>