vfio-user
QEMU includes a vfio-user
client. The vfio-user
specification allows for
implementing (PCI) devices in userspace outside of QEMU; it is similar to
vhost-user
in this respect (see vhost-user back ends), but can emulate arbitrary
PCI devices, not just virtio
. Whereas vfio
is handled by the host
kernel, vfio-user
, while similar in implementation, is handled entirely in
userspace.
For example, SPDK includes a virtual PCI NVMe controller implementation; by
setting up a vfio-user
UNIX socket between QEMU and SPDK, a VM can send NVMe
I/O to the SPDK process.
Presuming a suitable vfio-user
server has opened a socket at
/tmp/vfio-user.sock
, a device can be configured with for example:
-device ‘{“driver”: “vfio-user-pci”,”socket”: {“path”: “/tmp/vfio-user.sock”, “type”: “unix”}}’
See libvfio-user for further information.