All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: zhangwqh <zhangwqh@126.com>
Cc: xen-devel@lists.xensource.com
Subject: Re: xen interrupt
Date: Mon, 18 Mar 2013 09:28:36 -0400	[thread overview]
Message-ID: <20130318132836.GD24560@phenom.dumpdata.com> (raw)
In-Reply-To: <1363526292698-5714885.post@n5.nabble.com>

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@lists.xen.org
> http://lists.xen.org/xen-devel
> 

      parent reply	other threads:[~2013-03-18 13:28 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-17 13:18 xen interrupt zhangwqh
2013-03-18 11:36 ` Ian Campbell
2013-03-18 12:05   ` 张伟
2013-03-18 12:10     ` Ian Campbell
2013-03-18 13:28 ` Konrad Rzeszutek Wilk [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130318132836.GD24560@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=xen-devel@lists.xensource.com \
    --cc=zhangwqh@126.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.