Hi, This series adds on to the following series from Elena Ufimtseva <elena.ufimts...@oracle.com>: [PATCH RFC 00/19] vfio-user implementation
QEMU enabled out-of-process device emulation with multi-process [1]. multi-process used a custom protocol to interact between the client and server, which is not desirable. The vfio-user user protocol [2] implements a VFIO based mechanism to interact between the client and server. Since VFIO is a well-established specification, it is preferable in terms of maintenance. It makes sense for multi-process to switch to the vfio-user protocol. Nutanix implemented the vfio-user protocol in their libvfio-user library. The source for this library is located below: https://github.com/nutanix/libvfio-user Elena previously sent the patches for the vfio-user client. This series implements a vfio-user server for QEMU. It includes the libvfio-user as a git submodule to QEMU, and builds it along with QEMU. We would like to make the following notes: - Some of the existing multi-process code would become obsolete, and would need to be removed. This series does not remove them to keep the number of patches to a minimum. We will address them subsequently. - The libvfio-user library needs json-c package to build. It looks like the GitLab CI images used for build test don't have this package. As such it causes build failure. The patches from both series are available in the following github repo: https://github.com/oracle/qemu.git The vfio-user-client-server branch provides the same patches along with a python script (scripts/vfiouser-launcher.py) to launch the VM. Contributors: John G Johnson <john.g.john...@oracle.com> John Levon <john.le...@nutanix.com> Thanos Makatos <thanos.maka...@nutanix.com> Elena Ufimtseva <elena.ufimts...@oracle.com> Jagannathan Raman <jag.ra...@oracle.com> We are looking forward to your comments and questions. Thank you! [1]: https://patchew.org/QEMU/20210210092628.193785-1-stefa...@redhat.com/ [2]: https://patchwork.kernel.org/project/qemu-devel/patch/20210614104608.212276-1-thanos.maka...@nutanix.com/ Jagannathan Raman (11): vfio-user: build library vfio-user: define vfio-user 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: handle DMA mappings vfio-user: handle PCI BAR accesses vfio-user: handle device interrupts vfio-user: register handlers to facilitate migration vfio-user: acceptance test configure | 11 + meson.build | 35 ++ qapi/qom.json | 20 +- include/hw/remote/iohub.h | 2 + migration/savevm.h | 2 + hw/remote/iohub.c | 6 + hw/remote/vfio-user-obj.c | 754 ++++++++++++++++++++++++++++++++++++++++++ migration/savevm.c | 63 ++++ .gitmodules | 3 + MAINTAINERS | 9 + hw/remote/meson.build | 3 + hw/remote/trace-events | 10 + libvfio-user | 1 + tests/acceptance/vfio-user.py | 94 ++++++ 14 files changed, 1011 insertions(+), 2 deletions(-) create mode 100644 hw/remote/vfio-user-obj.c create mode 160000 libvfio-user create mode 100644 tests/acceptance/vfio-user.py -- 1.8.3.1