On Wed, Jan 14, 2026 at 1:01 PM Marc-André Lureau <[email protected]> wrote: > On Tue, Jan 6, 2026 at 1:47 AM Stefan Hajnoczi <[email protected]> wrote: > Rather than replying to this mail, I sketched some ideas of things I have in > mind on the wiki directly: > > https://wiki.qemu.org/Internships/ProjectIdeas/RDPUSB
Excellent! This one looks ready to go because it's self-contained. > https://wiki.qemu.org/Internships/ProjectIdeas/VFIOUSER > https://wiki.qemu.org/Internships/ProjectIdeas/ModernHMP > https://wiki.qemu.org/Internships/ProjectIdeas/mkosiTestAssets These three involve additional maintainers and require consensus before they can be listed. This way we can be confident that the intern's work will not be held up later by design discussions from people who are not yet on board with the idea. > I will try to reach the various people involved in those related projects to > see if they are reasonable proposals. > > We have a lot of ideas on the wiki > (https://wiki.qemu.org/Internships/ProjectIdeas/), that have various status.. > I wonder if they wouldn't be better under qemu.git docs/ with some form, so > we could send patches to discuss them instead. Arf, a QEMU Enhancement > Proposal, I have too much ideas :) For the internships, discussing them via email in this thread has worked well in the past. For a more general QEMU Enhancement Proposal process, that is a bigger topic for the community since there is currently no formal process for the development of new features. I have some thoughts about the vfio-user project idea: > === First-Class vfio-user Device Support === > > '''Summary:''' Promote QEMU's experimental vfio-user device support to > production-ready status by adding comprehensive testing, documentation, > migration support, and seamless CLI integration. > > Since 2022, QEMU has included `x-vfio-user-server` for running emulated PCI > devices in standalone processes using the vfio-user protocol. This enables > security isolation, modular device development, and flexible deployment > architectures. > > However, adoption has been limited due to: > * '''Experimental status''' - All components use `x-` prefix indicating > unstable API This is a question of whether the command-line interface is stable. John Levon, Thanos Makatos, and Cédric Le Goater are the maintainers for vfio-user. I wonder what their thoughts on removing the "x-" are? > * '''Complex CLI''' - Requires coordinating multiple components (`-machine > x-remote` + `-device` + `-object x-vfio-user-server`) > * '''No live migration''' - Migration explicitly blocked The vfio-user protocol has adopted the kernel VFIO interface's device state migration features. In theory the protocol supports migration, but I don't see QEMU code that implements the protocol features. If my understanding is correct, then there is a (sub-)project here to implement live migration protocol features in --device vfio-user-pci (the proxy) as well as in --object x-vfio-user-server (QEMU's server)? > * '''Limited testing''' - Only one functional smoke test exists > * '''Documentation''' - No usage guide or troubleshooting docs > > This project aims to make vfio-user a first-class QEMU feature. > > '''Goal:''' Enable out-of-process device emulation with a single CLI option. > > '''Current (complex):''' > <pre> > # Server process (full QEMU instance): > qemu-system-x86_64 -machine x-remote,vfio-user=on \ > -device pci-serial,id=serial0 \ > -object > x-vfio-user-server,id=vfu0,type=unix,path=/tmp/serial.sock,device=serial0 > > # Client process (main VM): > qemu-system-x86_64 ... -device vfio-user-pci,socket=/tmp/serial.sock > </pre> > > '''Proposed:''' > <pre> > # Single option spawns all capable devices out-of-process automatically > qemu-system-x86_64 -vfio-user \ > -device pci-serial \ > -device virtio-net-pci \ > -device pvpanic-pci \ At first I thought this was about launching third-party vfio-user device servers from the QEMU command-line, but later I realized it's only about running QEMU's PCI device emulation in separate processes. > ... > # QEMU automatically: > # - Identifies vfio-user capable devices > # - Spawns device server processes > # - Connects via vfio-user protocol > # - Manages lifecycle (startup, shutdown, crash recovery) > </pre> > > '''Implementation:''' > * Add global `-vfio-user` CLI option > * Identify devices capable of out-of-process emulation (all PCI devices > initially) > * Automatically spawn server process for each capable device > * Create internal socket connections (e.g., > `/tmp/qemu-vfio-user-<pid>-<device>.sock`) > * Replace device with `vfio-user-pci` client transparently > * Handle process lifecycle: spawn, health monitoring, graceful shutdown, > crash recovery > * Optional: `-vfio-user=<device-list>` to select specific devices Monitor commands don't work as expected in this mode since the main VM's QMP server is unaware of the vfio-user device server's QMP servers. How should QMP work for automatically spawned devices? I think approaches that try to aggregate query-* command results or make it appear that the devices are part of QEMU become complex quickly. Users choosing vfio-user for process isolation (security) need to launch vfio-user device servers before launching QEMU in order to achieve principle of least privilege (e.g. pass file descriptors only to the server and not to the main VM process). > '''Goal:''' Add test suite covering more vfio-user devices and functionalities > > Currently, a single smoke test > (`tests/functional/x86_64/test_vfio_user_client.py`) > > '''Test devices:''' > * `pvpanic-pci` - Minimal device, no interrupts > * `pci-serial` - Simple with INTx interrupt > * `virtio-*` - More complex devices with DMA Nice. > '''Goal:''' Documentation for users and developers > > ** Quick start examples > ** CLI reference > ** Common use cases (security isolation, modular development) > ** Troubleshooting guide > ** When to use vfio-user > ** Comparison with other solutions (vhost-user, usbredir, cacard, swtpm...) > ** Performance considerations Yes! > == Stretch goals == > > * Migration support > * Hot-plug support > * Support for non-PCI devices > > '''Links:''' > * https://www.qemu.org/docs/master/interop/vfio-user.html - vfio-user > protocol specification > * https://github.com/nutanix/libvfio-user - libvfio-user library > > '''Details:''' > * Skill level: advanced > * Language: C > * Mentor: Marc-André Lureau <[email protected]> (elmarco on IRC) > * VFIO-USER maintainers? > * Suggested by: Marc-André Lureau Stefan
