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.

To: ron minnich <rminnich@xxxxxxxx>
Subject: Re: [Xen-devel] fooey. no interrupts.
From: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Date: Tue, 10 Aug 2004 00:32:24 +0100
Cc: xen-devel@xxxxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 10 Aug 2004 00:35:24 +0100
Envelope-to: steven.hand@xxxxxxxxxxxx
In-reply-to: Your message of "Mon, 09 Aug 2004 13:54:32 MDT." <Pine.LNX.4.44.0408091348360.6398-100000@xxxxxxxxxxxxxxxxx>
List-archive: <http://sourceforge.net/mailarchive/forum.php?forum=xen-devel>
List-help: <mailto:xen-devel-request@lists.sourceforge.net?subject=help>
List-id: List for Xen developers <xen-devel.lists.sourceforge.net>
List-post: <mailto:xen-devel@lists.sourceforge.net>
List-subscribe: <https://lists.sourceforge.net/lists/listinfo/xen-devel>, <mailto:xen-devel-request@lists.sourceforge.net?subject=subscribe>
List-unsubscribe: <https://lists.sourceforge.net/lists/listinfo/xen-devel>, <mailto:xen-devel-request@lists.sourceforge.net?subject=unsubscribe>
Sender: xen-devel-admin@xxxxxxxxxxxxxxxxxxxxx
> I understand my confusion better. 
> cli on linux on xen is this:
> HYPERVISOR_shared_info->vcpu_data[0].evtchn_upcall_mask = 1;
> That disables all interrupts? I'm confused on that, how does this relate 
> to the evtchn_mask? 

The purpose of the evtchn_mask[] array is to disallow callbacks at
per-channel granularity. e.g., for scheduling purposes.

The evtchn_upcall_mask is intended to disallow callbacks in general,
where your OS is in a state that it cannot handle them. i.e., it's to
allow easy reeentrancy control in your OS.

> For cpu 0 do I need to clear BOTH of these for interrupts to happen, and 
> then in the domain itself only mess with the one for vcpu 0? I'm looking 
> at linux U kernel code but want to make sure I get this right. Is this 
> stuff really firmly tested and laid out or still somewhat tentative due to 
> the fact that it's not really tested with vcpu > 0?

For a particular event channel @e to fire you an async callback, you
 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.
 3. The original value of bit (@e>>5) in evtchn_pending_sel must be zero.
 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.

If these 5 requirements are satisfied then you _will_ receive a

 -- Keir

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