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

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



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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.