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

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



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