[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH V9 0/8] Xen PCI Passthrough
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. 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 v8-v9: - rename PCI_DEVICE_ID_INTEL_82599_VF to PCI_DEVICE_ID_INTEL_82599_SFP_VF to be consistant with Linux. - remove the patch about checking bar overlaps, the function is now in xen_pci_passthrough.c and uses pci_for_each_device. - Introduce an opaque argument to the function pci_for_each_device. - Fix the usage of memory listener: declare a stub function for every callback in the MemoryListener. Change v7-v8: - 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 (5): pci_ids: Add INTEL_82599_VF id. configure: Introduce --enable-xen-pci-passthrough. Introduce HostPCIDevice to access a pci device on the host. pci.c: Add opaque argument to pci_for_each_device. Introduce apic-msidef.h Jiang Yunhong (1): Introduce Xen PCI Passthrough, MSI (3/3) 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 | 11 +- hw/pci.h | 4 +- hw/pci_ids.h | 1 + hw/xen_common.h | 3 + hw/xen_pci_passthrough.c | 847 +++++++++++++++ hw/xen_pci_passthrough.h | 303 ++++++ hw/xen_pci_passthrough_config_init.c | 1866 ++++++++++++++++++++++++++++++++++ hw/xen_pci_passthrough_msi.c | 615 +++++++++++ hw/xen_platform.c | 8 +- xen-all.c | 12 + 16 files changed, 4076 insertions(+), 19 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |