Hi This is v2 of the RFC patches for vfio-user multi-process QEMU project[1].
Thank you for the review of v1 of the RFC patches. vfio-user is a protocol that allows a device to be emulated in a separate process outside of QEMU. It encapsulates the messages sent from QEMU to the kernel VFIO driver, and sends them to a remote process over a UNIX socket. The vfio-user framework consists of 3 parts: 1) The protocol specification. 2) A server - the VFIO generic device in QEMU that exchanges the protocol messages with the client. 3) A client - remote process that emulates a device. This patchset implements parts 1 and 2. The protocol's specification can be found here [2]: We also include this as the first patch of the series. The libvfio-user project (https://github.com/nutanix/libvfio-user) can be used by a remote process to handle the protocol to implement the third part. We also worked on implementing a client and will be sending this patch series shortly. 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> Changes in v2: - combine some patches with relevant functionality. - use SocketAddress with idea to modify later the command line options. - define protocol bits in user-protocol.h. - use QEMU_LOCK_GUARD where appropriate. - fix the locking when event signaling. - do not drop BQL on dma map/unmap. - added checks for message sizes in communication functions. John Johnson (15): vfio-user: add VFIO base abstract class vfio-user: Define type vfio_user_pci_dev_info vfio-user: connect vfio proxy to remote server vfio-user: define VFIO Proxy and communication functions vfio-user: negotiate version with remote server vfio-user: get device info vfio-user: get region info vfio-user: region read/write vfio-user: pci_user_realize PCI setup vfio-user: get and set IRQs vfio-user: proxy container connect/disconnect vfio-user: dma map/unmap operations vfio-user: dma read/write operations vfio-user: pci reset vfio-user: migration support Thanos Makatos (1): vfio-user: introduce vfio-user protocol specification docs/devel/index.rst | 1 + docs/devel/vfio-user.rst | 1809 +++++++++++++++++++++++++++++++++ hw/vfio/pci.h | 25 +- hw/vfio/user-protocol.h | 210 ++++ hw/vfio/user.h | 95 ++ include/hw/vfio/vfio-common.h | 9 + hw/vfio/common.c | 296 +++++- hw/vfio/migration.c | 34 +- hw/vfio/pci.c | 571 +++++++++-- hw/vfio/user.c | 1104 ++++++++++++++++++++ MAINTAINERS | 11 + hw/vfio/meson.build | 1 + 12 files changed, 4062 insertions(+), 104 deletions(-) create mode 100644 docs/devel/vfio-user.rst create mode 100644 hw/vfio/user-protocol.h create mode 100644 hw/vfio/user.h create mode 100644 hw/vfio/user.c -- 2.25.1