This is the 8th revision of the vfio-user client implementation. The vfio-user protocol allows for implementing (PCI) devices in another userspace process; SPDK is one example, which includes a virtual NVMe implementation.
The vfio-user framework consists of 3 parts: 1) The VFIO user protocol specification. 2) A client - the VFIO device in QEMU that encapsulates VFIO messages and sends them to the server. 3) A server - a remote process that emulates a device. This patchset implements parts 1 and 2. It has been tested against libvfio-user test servers as well as SPDK. Thanks for previous reviews & comments. Changes since v7: - split up pci patches for easier reviewing - fixed lots of device ops error handling - vfio-user code now in hw/vfio-user - improved commit messages - various other small cleanups Jagannathan Raman (20): vfio/container: pass MemoryRegion to DMA operations vfio: add region cache vfio: split out VFIOKernelPCIDevice vfio: add device IO ops vector vfio-user: add vfio-user class and container vfio-user: connect vfio proxy to remote server vfio-user: implement message receive infrastructure vfio-user: implement message send infrastructure vfio-user: implement VFIO_USER_DEVICE_GET_INFO vfio-user: implement VFIO_USER_DEVICE_GET_REGION_INFO vfio-user: implement VFIO_USER_REGION_READ/WRITE vfio-user: set up PCI in vfio_user_pci_realize() vfio-user: implement VFIO_USER_DEVICE_GET/SET_IRQ* vfio-user: forward MSI-X PBA BAR accesses to server vfio-user: set up container access to the proxy vfio-user: implement VFIO_USER_DEVICE_RESET vfio-user: implement VFIO_USER_DMA_READ/WRITE vfio-user: add 'no-direct-dma' option vfio-user: add 'x-msg-timeout' option vfio-user: add coalesced posted writes John Levon (7): vfio/container: pass listener_begin/commit callbacks vfio/container: support VFIO_DMA_UNMAP_FLAG_ALL vfio: add vfio_attach_device_by_iommu_type() vfio: add vfio_prepare_device() vfio: refactor out vfio_interrupt_setup() vfio: refactor out vfio_pci_config_setup() vfio-user: implement VFIO_USER_DMA_MAP/UNMAP Thanos Makatos (1): vfio-user: introduce vfio-user protocol specification MAINTAINERS | 10 +- docs/devel/index-internals.rst | 1 + docs/devel/vfio-user.rst | 1522 ++++++++++++++++++++++ hw/meson.build | 1 + hw/vfio-user/common.c | 1702 +++++++++++++++++++++++++ hw/vfio-user/common.h | 123 ++ hw/vfio-user/container.c | 358 ++++++ hw/vfio-user/container.h | 24 + hw/vfio-user/meson.build | 10 + hw/vfio-user/pci.c | 443 +++++++ hw/vfio-user/protocol.h | 243 ++++ hw/vfio-user/trace-events | 18 + hw/vfio-user/trace.h | 1 + hw/vfio/ap.c | 4 +- hw/vfio/ccw.c | 9 +- hw/vfio/common.c | 137 +- hw/vfio/container-base.c | 8 +- hw/vfio/container.c | 78 +- hw/vfio/helpers.c | 185 ++- hw/vfio/igd.c | 8 +- hw/vfio/iommufd.c | 31 +- hw/vfio/pci.c | 591 +++++---- hw/vfio/pci.h | 34 +- hw/vfio/platform.c | 4 +- hw/virtio/vhost-vdpa.c | 2 +- include/exec/memory.h | 4 +- include/hw/vfio/vfio-common.h | 45 +- include/hw/vfio/vfio-container-base.h | 11 +- meson.build | 1 + meson_options.txt | 2 + scripts/meson-buildoptions.sh | 4 + system/memory.c | 7 +- 32 files changed, 5281 insertions(+), 340 deletions(-) create mode 100644 docs/devel/vfio-user.rst create mode 100644 hw/vfio-user/common.c create mode 100644 hw/vfio-user/common.h create mode 100644 hw/vfio-user/container.c create mode 100644 hw/vfio-user/container.h create mode 100644 hw/vfio-user/meson.build create mode 100644 hw/vfio-user/pci.c create mode 100644 hw/vfio-user/protocol.h create mode 100644 hw/vfio-user/trace-events create mode 100644 hw/vfio-user/trace.h -- 2.34.1