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

Re: [Xen-devel] xen interrupt

On Sun, Mar 17, 2013 at 06:18:12AM -0700, zhangwqh wrote:
> Hi, all
> These days I read the source code about xen interrupts. When physical
> interrupts arrive, in xen source code, do_IRQ will decide which will deal
> with the physical interrupt, by xen or the guest os. If the physical
> interrupt should be dealt with by guest os. Then the case __do_irq_guest()
> will be executed. In __do_irq_guest() function, the corresponding event
> channel will be delivered to the guests that are registered the irq. My
> question is that in the guest os, how to decide whether the irq is to
> itself? Eg, a guest A request a file from a disk, after the disk finished to
> get the file, will generate a disk interrupt. The disk interrupt should only
> be delivered to the guest A. Maybe all of the guest virtual machines
> registered the  disk interrupt. __do_irq_guest will deliver the disk
> interrupt to all of the virtual machines. In the virtual machine, how to

It will only deliever it to the guest that has the PIRQ / event assigned to it.

> decide the disk interrupt was generated by its requested file? 

Simply - the driver (say ahci) ends up making an hypercall (PHYSDEVOP_map_pirq)
to setup an PIRQ for a specific PCI device. The PIRQ (depending whether it
is an MSI, MSI-X or GSI) is programmed in the IOAPIC/IDT and said pirq along
with an event channel number is returned to the guest. The hypervisor remembers
the <pirq, event channel, dom> information.
When the do_irq happens the vector number is looked up to figure out where to
deliever it.
> --
> View this message in context: 
> http://xen.1045712.n5.nabble.com/xen-interrupt-tp5714885.html
> Sent from the Xen - Dev mailing list archive at Nabble.com.
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

Xen-devel mailing list



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