[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RFC 00/19] vfio-user implementation
|
From: |
Elena Ufimtseva |
|
Subject: |
[PATCH RFC 00/19] vfio-user implementation |
|
Date: |
Sun, 18 Jul 2021 23:27:39 -0700 |
Hi
We are happy to introduce the next stage of the multi-process QEMU project[1].
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>
Please send your comments and questions!
Thank you.
References:
[1] https://wiki.qemu.org/Features/MultiProcessQEMU
[2]
https://patchwork.kernel.org/project/qemu-devel/patch/20210614104608.212276-1-thanos.makatos@nutanix.com/
John G Johnson (18):
vfio-user: add VFIO base abstract class
vfio-user: define VFIO Proxy and communication functions
vfio-user: Define type vfio_user_pci_dev_info
vfio-user: connect vfio proxy to remote server
vfio-user: negotiate protocol with remote server
vfio-user: define vfio-user pci ops
vfio-user: VFIO container setup & teardown
vfio-user: get device info and get irq info
vfio-user: device region read/write
vfio-user: get region and DMA map/unmap operations
vfio-user: probe remote device's BARs
vfio-user: respond to remote DMA read/write requests
vfio_user: setup MSI/X interrupts and PCI config operations
vfio-user: vfio user device realize
vfio-user: pci reset
vfio-user: probe remote device ROM BAR
vfio-user: migration support
vfio-user: add migration cli options and version negotiation
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.h | 279 +++++
include/hw/vfio/vfio-common.h | 8 +
hw/vfio/common.c | 273 ++++-
hw/vfio/migration.c | 35 +-
hw/vfio/pci.c | 547 ++++++++--
hw/vfio/user.c | 997 ++++++++++++++++++
MAINTAINERS | 10 +
hw/vfio/meson.build | 1 +
11 files changed, 3879 insertions(+), 106 deletions(-)
create mode 100644 docs/devel/vfio-user.rst
create mode 100644 hw/vfio/user.h
create mode 100644 hw/vfio/user.c
--
2.25.1
[PATCH RFC 08/19] vfio-user: VFIO container setup & teardown, Elena Ufimtseva, 2021/07/19