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/
Home Products Support Community News


Re: [Xen-devel] fooey. no interrupts.

On Mon, Aug 09, 2004 at 09:24:44PM -0600, ron minnich wrote:
> > For a particular event channel @e to fire you an async callback, you
> > need:
> >  1. The original value of bit @e in evtchn_pending[] must be zero.
> >  2. The value of bit @e in evtchn_mask[] must be zero.
> Is there a race condition here? Let's pretend this is the 10ms interrupt
>       @e gets set in evtchn_pending
>       @e in evtchn_mask is set (not zero) because it is still masked
>               as Plan is still in the interrupt printing lots of info 
>               for me. 

You have to check for a pending interrupt when you unmask an interrupt.
This can be done atomically by disabling interrupts with evtchn_upcall_mask.

> >  4. The original value of vcpu_data[0].evtchn_upcall_pending must be zero.
> >  5. The value of vcpu_data[0].evtchn_upcall_mask must be zero.
> OK, this I don't totally see. From the code I posted before, it seems to 
> me only the first three conditions matter. 

4 is not true, we don't test it and set it unconditionally.


SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
Xen-devel mailing list