Hi, This is v8 of the server side changes to enable vfio-user in QEMU.
Thank you very much for reviewing the last revision of this series! We've made the following changes in this revision: [PATCH v8 06/17] vfio-user: build library - updated libvfio-user to the latest [PATCH v8 07/17] vfio-user: define vfio-user-server object - changed auto_shutdown to a per-instance property than a per-class property [PATCH v8 12/17] vfio-user: IOMMU support for remote device - lock mutex while looking up hash table - removed global hash table - added RemoteIommu object to house this variable - added unplug handler to remove per-device IOMMU entry when a PCIDevice is unplugged [PATCH v8 14/17] vfio-user: handle PCI BAR accesses - refactored vfu_object_bar_rw() - vfu_object_bar_rw() handles short sections returned by memory_region_find() [PATCH v8 15/17] vfio-user: handle device interrupts - removed callbacks for msi_notify() and msix_notify() - added callbacks for msi_send_message() and msi(x)_get_message() operations Thank you! Jagannathan Raman (17): tests/avocado: Specify target VM argument to helper routines qdev: unplug blocker for devices remote/machine: add HotplugHandler for remote machine remote/machine: add vfio-user property configure: require cmake 3.19 or newer vfio-user: build library vfio-user: define vfio-user-server object vfio-user: instantiate vfio-user context vfio-user: find and init PCI device vfio-user: run vfio-user context vfio-user: handle PCI config space accesses vfio-user: IOMMU support for remote device vfio-user: handle DMA mappings vfio-user: handle PCI BAR accesses vfio-user: handle device interrupts vfio-user: handle reset of remote device vfio-user: avocado tests for vfio-user configure | 36 +- meson.build | 44 +- qapi/misc.json | 23 + qapi/qom.json | 20 +- include/exec/memory.h | 3 + include/hw/pci/pci.h | 13 + include/hw/qdev-core.h | 29 + include/hw/remote/iommu.h | 40 + include/hw/remote/machine.h | 4 + include/hw/remote/vfio-user-obj.h | 6 + hw/core/qdev.c | 24 + hw/pci/msi.c | 16 +- hw/pci/msix.c | 10 +- hw/pci/pci.c | 13 + hw/remote/iommu.c | 114 +++ hw/remote/machine.c | 88 +- hw/remote/vfio-user-obj.c | 891 +++++++++++++++++++++ softmmu/physmem.c | 4 +- softmmu/qdev-monitor.c | 4 + stubs/vfio-user-obj.c | 6 + tests/qtest/fuzz/generic_fuzz.c | 9 +- .gitlab-ci.d/buildtest.yml | 2 + .gitmodules | 3 + Kconfig.host | 4 + MAINTAINERS | 6 + hw/remote/Kconfig | 4 + hw/remote/meson.build | 4 + hw/remote/trace-events | 11 + meson_options.txt | 3 + stubs/meson.build | 1 + subprojects/libvfio-user | 1 + tests/avocado/avocado_qemu/__init__.py | 14 +- tests/avocado/vfio-user.py | 164 ++++ tests/docker/dockerfiles/centos8.docker | 2 + tests/docker/dockerfiles/ubuntu2004.docker | 2 + 35 files changed, 1594 insertions(+), 24 deletions(-) create mode 100644 include/hw/remote/iommu.h create mode 100644 include/hw/remote/vfio-user-obj.h create mode 100644 hw/remote/iommu.c create mode 100644 hw/remote/vfio-user-obj.c create mode 100644 stubs/vfio-user-obj.c create mode 160000 subprojects/libvfio-user create mode 100644 tests/avocado/vfio-user.py -- 2.20.1