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: Thu, 08 Sep 2011 10:51:26 +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: Thu, 08 Sep 2011 00:57:07 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4E67C15B.3000408@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> <4E67ACB6.40107@xxxxxxxxxx> <4E67C15B.3000408@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 10:09 PM, Jeremy Fitzhardinge wrote:
On 09/07/2011 10:41 AM, Avi Kivity wrote:
>>  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:

Hm.  It's a pity you have to deliver an actual interrupt to implement
the kick though.

I don't think it's that expensive, especially compared to the double-context-switch and vmexit of the spinner going to sleep. On AMD we do have to take an extra vmexit (on IRET) though.

>>
>>  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.

Or what about a futex-like hypercall?


Well we could have a specialized sleep/wakeup hypercall pair like Xen, but I'd like to avoid it if at all possible.

--
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>