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] Does Dom0 always get interrupts first before they are de

To: "Petersson, Mats" <Mats.Petersson@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Does Dom0 always get interrupts first before they are delivered to other guest domains?
From: "Liang Yang" <multisyncfe991@xxxxxxxxxxx>
Date: Fri, 16 Mar 2007 11:48:55 -0700
Delivery-date: Fri, 16 Mar 2007 11:48:02 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
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/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <907625E08839C4409CE5768403633E0B018E1ABB@xxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Hi Mats,

Thanks. I still have two more questions:

First, you once gave another excellent explanation about the communication between HVM domain and HV (15 Feb 2007 ). Here I quote part of it "...Since these IO events are synchronous in a real processor, the hypervisor will wait for a "return event" before the guest is allowed to continue. Qemu-dm runs as a normal user-process in Dom0..." My question is about those Synchronous I/O events. Why can't we make them asynchronous? e.g. whenever I/O are done, we can interrupt HV again and let HV resume I/O processing. Is there any specific limiation to force Xen hypervisor do I/O in synchronous mode?

Second, you just mentioned there is big difference between the number of HV-to-domain0 events for device model and split driver model. Could you elaborate the details about how split driver model can reduce the HV-to-domain0 events compared with using qemu device model?

Have a wonderful weekend,


----- Original Message ----- From: "Petersson, Mats" <Mats.Petersson@xxxxxxx> To: "Liang Yang" <multisyncfe991@xxxxxxxxxxx>; <xen-devel@xxxxxxxxxxxxxxxxxxx>
Sent: Friday, March 16, 2007 10:40 AM
Subject: RE: [Xen-devel] Does Dom0 always get interrupts first before they are delivered to other guest domains?

-----Original Message-----
From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
[mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Liang Yang
Sent: 16 March 2007 17:30
To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Does Dom0 always get interrupts first
before they are delivered to other guest domains?


It seems if HVM domains access device using emulation mode
w/ device model
in domain0, Xen hypervisor will send the interrupt event to
domain0 first
and then the device model in domain0 will send event to HVM domains.

Ok, so let's see if I've understood your question first:
If we do a disk-read (for example), the actual disk-read operation
itself will generate an interrupt, which goes into Xen HV where it's
converted to an event that goes to Dom0, which in turn wakes up the
pending call to read (in this case) that was requesting the disk IO, and
then when the read-call is finished an event is sent to the HVM DomU. Is
this the sequence of events that you're talking about?

If that's what you are talking about, it must be done this way.

However, if I'm using split driver model and I only run BE driver on
domain0. Does domain0 still get the interrupt first (assume
this interupt is
not owned by the Xen hypervisor ,e.g. local APIC timer) or
Xen hypervisor
will send event directly to HVM domain bypass domain0 for
split driver

Not in the above type of scenario. The interrupt must go to the
driver-domain (normally Dom0) to indicate that the hardware is ready to
deliver the data. This will wake up the user-mode call that waited for
the data, and then the data can be delivered to the guest domain from
there (which in turn is awakened by the event sent from the driver

There is no difference in the number of events in these two cases.

There is however a big difference in the number of hypervisor-to-dom0
events that occur: the HVM model will require something in the order of
5 writes to the IDE controller to perform one disk read/write operation.
Each of those will incur one event to wake up qemu-dm, and one event to
wake the domu (which will most likely just to one or two instructions
forward to hit the next write to the IDE controller).

Another question is: for interrupt delivery, does Xen treat
domain differently from HVM domain considering using device
model and split
driver model?

Not in interrupt delivery, no. Except for the fact that HVM domains
obviously have full hardware interfaces for interrupt controllers etc,
which adds a little bit of overhead (because each interrupt needs to be
acknowledged/cancelled on the interrupt controller, for example).


Thanks a lot,


Xen-devel mailing list

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>