WARNING - OLD ARCHIVES

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

xen-devel

Re: [Xen-devel] Interrupt for HVM guests

Subject: Re: [Xen-devel] Interrupt for HVM guests
From: Emre Can Sezer <ecsezer@xxxxxxxx>
Date: Mon, 08 Jun 2009 15:24:58 -0400
Cc: Xen Devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Mon, 08 Jun 2009 12:25:19 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C64F2970.CF5A%keir.fraser@xxxxxxxxxxxxx>
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <C64F2970.CF5A%keir.fraser@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.21 (Windows/20090302)
Keir Fraser wrote:
On 05/06/2009 19:43, "Emre Can Sezer" <ecsezer@xxxxxxxx> wrote:

I am trying to figure out how an HVM guest is passed an interrupt.  Say
that a network packet has arrived and the QEMU driver in dom0 has to
notify an HVM guest of the packet's arrival.  Could someone please give
a brief, high-level description of this process?  I read the Intel
Architectures Software Developer's Guide on VM Execution bits and
Virtual interrupts and also some Xenwiki stuff about it but I'm still
not sure what's going on.  I don't have any device pass-through or
stubdom or PV Drivers for my HVM guest.  I would also appreciate
references to some Xen files/functions related to this process.

Following will give you enough to grep around for the details:
Hypercall is HVMOP_set_pci_intx_level: qemu-dm uses this to assert a PCI
INTx virtual interrupt line. Handled by hvm_pci_intx_assert() ->
vioapic_irq_positive_edge() -> vioapic_deliver() -> ioapic_inj_irq() ->
vlapic_set_irq()&vcpu_kick(). Final function there wakes the guest vcpu
which on vmentry calls vmx_intr_assist() -> hvm_vcpu_has_pending_irq() ->
vlapic_has_pending_irq(), which will return a pending vector.
Vmx_intr_assist() then delivers that vector via vmx_inject_extint().
Hardware then delivers the interrupt automatically during vmentry.

 -- Keir

Thanks Keir. I do have another question though. I am trying to find out whether a page fault occurred during an interrupt handling. I implemented two page tables for HVM guests that help me track execution within the guest kernel. So there is a very good chance that an interrupt might also result in a page fault as soon as it is injected. I tried counting these events by checking the IF flags in regs->rflags and also looking at VIF and VIP flags without success. Is this a viable method for determining whether a page fault was caused during interrupt handling? If not, is there any VM state I can check?

Thanks,

John

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

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