From: Anthony PERARD <anthony.perard@citrix.com>
To: QEMU-devel <qemu-devel@nongnu.org>
Cc: Anthony PERARD <anthony.perard@citrix.com>,
Anthony Liguori <aliguori@us.ibm.com>,
Xen Devel <xen-devel@lists.xensource.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: [Qemu-devel] [PATCH V8 RESEND 0/8] Xen PCI Passthrough
Date: Fri, 16 Mar 2012 16:54:14 +0000 [thread overview]
Message-ID: <1331916862-20504-1-git-send-email-anthony.perard@citrix.com> (raw)
Hi all,
This patch series introduces the PCI passthrough for Xen.
Please review patches number 1, 2, 3, 4 and 7.
First, we have HostPCIDevice that help to access one PCI device of the host.
Then, there is an additions in the QEMU code, pci_check_bar_overlap.
There are also several change in pci_ids and pci_regs.
Last part, but not least, the PCI passthrough device himself. Cut in 3 parts
(or file), there is one to take care of the initialisation of a passthrough
device. The second one handle everything about the config address space, there
are specifics functions for every config register. The third one is to handle
MSI.
There is a patch series on xen-devel (applied to xen-unstable) that add the
support of setting a PCI passthrough device through QMP from libxl (xen tool
stack). It is just a call to device_add, with the driver parametter
hostaddr="0000:07:00.1".
Change since the previous set:
- rework of the memory mapping of BARs. We now use a memory_listener to update
a xen memory_mapping when a memory_region is updated.
- address few comment from Michael in the pci_check_overlap function.
- fix the handling of the ROM slot.
Change v6-v7:
- few fix and rebased on master
- remove of the power management capability, keep the minimum like if it is
always desactivated.
- new patch: port of patch from the qemu-xen fork.
Change v5-v6:
- msitraslate code have been removed.
- code for the power management capability is removed, but will be re-added
for the next version of the patch series as a separate patch.
- new patch to remove a check in pci_parse_devaddr.
- use pci_default_config_write, so no more hack to handle the BAR mapping in
QEMU.
- improve the code in general (a bit more comprehensible).
- update to QOM.
Change v4-v5:
- return -errno if there is an error in host_pci_get_*
- rename internal function get_value to get_hex_value (and return the same
error value has get_resource)
Change v3-v4:
- host_pci_get_* can now return an error, and take an extra parameter, a
pointer to store the wanted value.
- The memory_region for the PCI BAR are handled "manualy" because calling
pci_default_write_config was not possible, because the XenPT handle the
PCIIORegion it self. This make possible to do a device_remove.
- Introduction of PT_ERR and PT_WARN macro to print debug and error messages.
Also, these macro as well as PT_LOG will always print the short BDF of the
device in the guest point of view.
- PT_ERR is print by default (for all error messages).
- Some debug/error message have been improve and should be a bit more useful.
- hw_error have been removed from the code, and have been replaced by either
a call to qemu_system_shudown_request() (that lead to a domain destroy) or
a failed in the initialisation of the device.
- Now, every patchs should compile with no error.
Change v2-v3;
- in host-pci-device.c:
- Return more usefull error code in get_ressource().
- Use macro in host_pci_find_ext_cap_offset instead of raw number. But I
still not sure if PCI_MAX_EXT_CAP is right, it's result is 480 like it
was before, so it's maybe ok.
- All use of MSI stuff in two first pci passthrough patch have been removed
and move to the last patch.
Change v1-v2:
- fix style issue (checkpatch.pl)
- set the original authors, add some missing copyright headers
- HostPCIDevice:
- introduce HostPCIIORegions (with base_addr, size, flags)
- save all flags from ./resource and store it in a separate field.
- fix endianess on write
- new host_pci_dev_put function
- use pci.c like interface host_pci_get/set_byte/word/long (instead of
host_pci_read/write_)
- compile HostPCIDevice only on linux (as well as xen_pci_passthrough)
- introduce apic-msidef.h file.
- no more run_one_timer, if a pci device is in the middle of a power
transition, just "return an error" in config read/write
- use a global var mapped_machine_irq (local to xen_pci_passthrough.c)
- add msitranslate and power-mgmt ad qdev property
Allen Kay (2):
Introduce Xen PCI Passthrough, qdevice (1/3)
Introduce Xen PCI Passthrough, PCI config space helpers (2/3)
Anthony PERARD (4):
pci_ids: Add INTEL_82599_VF id.
configure: Introduce --enable-xen-pci-passthrough.
Introduce HostPCIDevice to access a pci device on the host.
Introduce apic-msidef.h
Jiang Yunhong (1):
Introduce Xen PCI Passthrough, MSI (3/3)
Yuji Shimada (1):
pci.c: Add pci_check_bar_overlap
Makefile.target | 6 +
configure | 25 +
hw/apic-msidef.h | 30 +
hw/apic.c | 11 +-
hw/host-pci-device.c | 278 +++++
hw/host-pci-device.h | 75 ++
hw/pci.c | 50 +
hw/pci.h | 5 +
hw/pci_ids.h | 1 +
hw/xen_common.h | 3 +
hw/xen_pci_passthrough.c | 771 ++++++++++++++
hw/xen_pci_passthrough.h | 303 ++++++
hw/xen_pci_passthrough_config_init.c | 1866 ++++++++++++++++++++++++++++++++++
hw/xen_pci_passthrough_msi.c | 615 +++++++++++
xen-all.c | 12 +
15 files changed, 4041 insertions(+), 10 deletions(-)
create mode 100644 hw/apic-msidef.h
create mode 100644 hw/host-pci-device.c
create mode 100644 hw/host-pci-device.h
create mode 100644 hw/xen_pci_passthrough.c
create mode 100644 hw/xen_pci_passthrough.h
create mode 100644 hw/xen_pci_passthrough_config_init.c
create mode 100644 hw/xen_pci_passthrough_msi.c
--
Anthony PERARD
next reply other threads:[~2012-03-16 16:55 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-16 16:54 Anthony PERARD [this message]
2012-03-16 16:54 ` [Qemu-devel] [PATCH V8 RESEND 1/8] pci_ids: Add INTEL_82599_VF id Anthony PERARD
2012-03-19 11:50 ` Stefano Stabellini
2012-03-19 16:54 ` Anthony PERARD
2012-05-12 1:43 ` [Qemu-devel] [Xen-devel] " Konrad Rzeszutek Wilk
2012-05-14 10:52 ` Anthony PERARD
2012-03-16 16:54 ` [Qemu-devel] [PATCH V8 RESEND 2/8] configure: Introduce --enable-xen-pci-passthrough Anthony PERARD
2012-03-19 11:51 ` Stefano Stabellini
2012-05-12 1:42 ` [Qemu-devel] [Xen-devel] " Konrad Rzeszutek Wilk
2012-05-14 10:49 ` Anthony PERARD
2012-05-16 11:15 ` Konrad Rzeszutek Wilk
2012-03-16 16:54 ` [Qemu-devel] [PATCH V8 RESEND 3/8] Introduce HostPCIDevice to access a pci device on the host Anthony PERARD
2012-03-19 11:53 ` Stefano Stabellini
2012-03-16 16:54 ` [Qemu-devel] [PATCH V8 RESEND 4/8] pci.c: Add pci_check_bar_overlap Anthony PERARD
2012-03-19 11:55 ` Stefano Stabellini
2012-03-19 13:15 ` Michael S. Tsirkin
2012-03-19 17:22 ` Anthony PERARD
2012-03-16 16:54 ` [Qemu-devel] [PATCH V8 RESEND 5/8] Introduce Xen PCI Passthrough, qdevice (1/3) Anthony PERARD
2012-03-19 12:00 ` Stefano Stabellini
2012-05-12 1:53 ` [Qemu-devel] [Xen-devel] " Konrad Rzeszutek Wilk
2012-03-16 16:54 ` [Qemu-devel] [PATCH V8 RESEND 6/8] Introduce Xen PCI Passthrough, PCI config space helpers (2/3) Anthony PERARD
2012-03-19 12:01 ` Stefano Stabellini
2012-03-16 16:54 ` [Qemu-devel] [PATCH V8 RESEND 7/8] Introduce apic-msidef.h Anthony PERARD
2012-03-19 12:04 ` Stefano Stabellini
2012-03-16 16:54 ` [Qemu-devel] [PATCH V8 RESEND 8/8] Introduce Xen PCI Passthrough, MSI (3/3) Anthony PERARD
2012-03-19 12:04 ` Stefano Stabellini
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=1331916862-20504-1-git-send-email-anthony.perard@citrix.com \
--to=anthony.perard@citrix.com \
--cc=aliguori@us.ibm.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefano.stabellini@eu.citrix.com \
--cc=xen-devel@lists.xensource.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).