VFIO User - Using VFIO as the IPC Protocol in Multi-process QEMU
summary
Project switches QEMU multi-process IPC from a custom proxy to VFIO encapsulated over a socket, using libvfio-user to reuse kernel ioctl semantics so existing device emulation stays unchanged. Server runs as a standalone process with an x-remote machine type, communication over UNIX sockets, DMA via passed file descriptors (or secure DMA to avoid exporting fds), and per-socket IO threads plus async map handling to avoid holding QEMU locks. Demo boots two LSI controllers with 10GB and 5GB drives, shows live migration across four QEMU processes, and microbenchmarks show no significant random I/O regression.
AI-written summary · about
chapters (14)
- 0:00Introduction
- 0:42Original Idea
- 2:42Collaboration
- 5:18Abstract Superclass
- 8:00QEMU Server Components
- 9:32initialization phase
- 11:19memory listener
- 11:50other significant functions
- 14:30region info
- 15:07mask
- 16:07dma
- 16:42dirtypages
- 17:08performance test
- 19:08demonstration
related talks
20mvFPIO: A Virtual I/O Abstraction for FPGA-accelerated I/O Devices
21mVirtio Devices Emulation in SPDK Based on Vfio-User Protocol
17mVirtio data flow: There and Back Again
30mQEMU-Storage-Daemon and libblkio: Exploring New Shores for the QE...
31mIOMMUFD Discussion
39mQEMU: Emulating Your Way to Success
25mThe Qemu/KVM ecosystem: Navigating the code!
36mShared Virtual Addressing for High Performance Arm Infrastructure Platforms
