[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RFC v2 00/16] vfio-user implementation
From: |
Elena Ufimtseva |
Subject: |
[PATCH RFC v2 00/16] vfio-user implementation |
Date: |
Mon, 16 Aug 2021 09:42:33 -0700 |
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.johnson@oracle.com>
John Levon <john.levon@nutanix.com>
Thanos Makatos <thanos.makatos@nutanix.com>
Elena Ufimtseva <elena.ufimtseva@oracle.com>
Jagannathan Raman <jag.raman@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
- [PATCH RFC v2 00/16] vfio-user implementation,
Elena Ufimtseva <=