xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xenbegn developer <xen.begn.dev@gmail.com>
Cc: xen-devel@lists.xen.org
Subject: Re: [Query] Flow of PCI device dedicated to a domU
Date: Tue, 22 Jul 2014 10:56:17 +0100	[thread overview]
Message-ID: <53CE3541.80506@citrix.com> (raw)
In-Reply-To: <CABJY2XBukFBGM-1d_3pfo54-fspF0OApfvEpcbF9RMRrmsfPdg@mail.gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 2523 bytes --]

On 22/07/14 10:50, Xenbegn developer wrote:
>
>
>
> On Wed, Jul 16, 2014 at 3:20 PM, Andrew Cooper
> <andrew.cooper3@citrix.com <mailto:andrew.cooper3@citrix.com>> wrote:
>
>     On 16/07/14 07:12, Xenbegn developer wrote:
>>     Hi,
>>     I am trying to understand the flow of how a PCI device driver in
>>     domU works after a PCI device is is assigned to a domU.
>>
>>     a) If a PCI device is assigned to a domU, this device has to be
>>     on a PCI bus. So as per my view xen would have to somehow provide
>>     a PCI Controller on which this device is attached.
>>     => Is my assumption correct ? If yes how it is done, No then also
>>     How enumeration of this device happens in domU kernel
>
>     No.
>
>     PV guests have no PCI root ports/bridges; they use devices as
>     single entities knowing that Xen/dom0 takes care of the other
>     bits. HVM guests have their PCI devices attached to the virtual
>     southbridge which is all emulated by Qemu.
>
>
>>
>>     b) Is the Configuration space of the PCI device directly
>>     accessible to the domU (assuming the kernel accesses it using
>>     memory map) ? If not then it is trapped by xen
>
>     All configuration space is trap+emulate in Xen, although almost
>     all operations permitted.
>
>
>>
>>     c) Who assigns the MSI (addr + value) in the PCI device. If Xen
>>     then how Xen does a translation from Physical MSI to guest MSI
>>     (where in code)
>
>     Xen controls all interrupts on the system, which is why it needs
>     to trap all config accesses to notice when a domain is attempting
>     to change the interrupt information.  In that case, Xen fixes up
>     its delivery of interrupts to the guest, but leaves the underlying
>     interrupt information intact.
>
>     ~Andrew
>
>
> Linux kernel pci code has a function called __write_msi_msg. This
> method writes to config space for MSI/MSIX
> pci_write_config_dword(dev, pos + PCI_MSI_ADDRESS_LO,
>                        msg->address_lo);
>
> Now as per (b) and (c) it has to be trapped in xen. But in x86/traps.c
> (guest_io_write) I dont see any MSI handling.
> Can you please explain (point to the code) where domain is attempting
> to change the interrupt information.
>    
>

PV guests are expected to use PHYSOP hypercalls for interrupt
management.  Xen does not provide transparent emulation support for them.

HVM guests do get transparent emulation support, as from the point of
view of an HVM guest, they are talking to a real PCI device.

~Andrew

[-- Attachment #1.2: Type: text/html, Size: 6579 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  reply	other threads:[~2014-07-22  9:56 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-16  6:12 [Query] Flow of PCI device dedicated to a domU Xenbegn developer
2014-07-16  9:50 ` Andrew Cooper
2014-07-17  6:34   ` Xenbegn developer
2014-07-17  9:42     ` Andrew Cooper
2014-07-22  9:43       ` Xenbegn developer
2014-07-22  9:53         ` Andrew Cooper
2014-07-22 10:02           ` Xenbegn developer
2014-07-22  9:50   ` Xenbegn developer
2014-07-22  9:56     ` Andrew Cooper [this message]
2014-07-22 10:13       ` Xenbegn developer
2014-07-22 10:33         ` Andrew Cooper
2014-07-22 10:51           ` Xenbegn developer
2014-07-22 11:33             ` Xenbegn developer
2014-07-22 12:44               ` Ian Campbell
2014-07-22 14:11               ` Stefano Stabellini
2014-07-22 15:56                 ` Simon Martin
2014-07-22 16:01                   ` Simon Martin
2014-07-22 16:02                   ` Ian Campbell
2014-07-22 16:06                     ` Simon Martin
2014-07-22 16:06                   ` Stefano Stabellini
2014-07-22 16:09                     ` Simon Martin
2014-07-24  5:17                 ` Xenbegn developer
2014-07-24 10:04                   ` Stefano Stabellini
2014-07-24  8:08     ` Xenbegn developer
2014-07-24  9:20       ` Ian Campbell
2014-07-24 10:21       ` Stefano Stabellini
2014-07-16 13:46 ` Konrad Rzeszutek Wilk

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=53CE3541.80506@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=xen-devel@lists.xen.org \
    --cc=xen.begn.dev@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).