This series enables support for PCI SR-IOV capability for PVH domains.
It allows Dom0 to enable and use SR-IOV virtual functions and for these
functions to be passed to guests.
To achieve this, add handlers for SRIOV_CONTROL registers, simplified handlers
for VFs headers. Xen relies on dom0 to enable SR-IOV and call
PHYSDEVOP_pci_device_* to inform about addition/removal of VFs.
Core functionality is based on previous work[1].
Tested on R-Car Spider board with Samsung NVMe SSD Controller 980 and Intel
X550T ethernet card.
[1]: https://lore.kernel.org/xen-devel/20180717094830.54806-1-roger.pau@citrix.com/
v2->v3:
* rework the series for VF discovery by Dom0
* drop pci/iommu: Check that IOMMU supports removing devices, see [2]
* drop vpci: add a wait operation to the vpci vcpu pending actions
* add vpci: allow queueing of mapping operations
* minor changes in individual patches
[2]: https://patchew.org/Xen/a59c2da0d4c72deb42950e9a8e3982fbdee60668.1775555766.git.mykyta._5Fpoturai@epam.com/
v1->v2:
* rework the series for VF discovery in Xen
* separate doc changes into the last patch
Mykyta Poturai (2):
vpci: Use pervcpu ranges for BAR mapping
docs: Update SR-IOV support status
Stewart Hildebrand (5):
vpci: rename and export vpci_modify_bars
vpci: rename and export vpci_guest_mem_bar_{read,write}
vpci: allow queueing of mapping operations
vpci: add SR-IOV support for PVH Dom0
vpci: add SR-IOV support for DomUs
SUPPORT.md | 2 -
xen/common/domain.c | 2 +
xen/drivers/vpci/Makefile | 1 +
xen/drivers/vpci/header.c | 314 +++++++++++++++++++------------
xen/drivers/vpci/private.h | 10 +
xen/drivers/vpci/sriov.c | 366 +++++++++++++++++++++++++++++++++++++
xen/drivers/vpci/vpci.c | 10 +-
xen/include/xen/vpci.h | 28 ++-
8 files changed, 607 insertions(+), 126 deletions(-)
create mode 100644 xen/drivers/vpci/sriov.c
--
2.51.2