Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/website/content/en/status/report-2025-10-2025-12/qemu-vmm-accelerator.adoc
18097 views
=== QEMU vmm Accelerator Support

Links: +
link:https://wiki.freebsd.org/SummerOfCode2025Projects/VMMAcceleratorSupportForQEMU[Project Link] URL: https://wiki.freebsd.org/SummerOfCode2025Projects/VMMAcceleratorSupportForQEMU[] +
link:https://github.com/dumrich/freebsd-src[Code (FreeBSD fork)] URL: link:https://github.com/dumrich/freebsd-src[] +
link:https://github.com/dumrich/qemu.git[Code (QEMU fork)] URL: https://github.com/dumrich/qemu.git[]

Contact: Abhinav Chavali <[email protected]>

==== Description

This project aims to implement a man:vmm[4] accelerator backend for QEMU.
By interfacing QEMU with FreeBSD's native hypervisor infrastructure, users can run virtual machines with near-native performance using hardware virtualization extensions (VMX/SVM), similar to how KVM functions on Linux.
This combines the extensive device emulation ecosystem of QEMU with the performance of the FreeBSD kernel hypervisor.

==== Status

The backend is now functional enough to boot a FreeBSD guest using a single vCPU.
The core infrastructure for interfacing QEMU with `libvmmapi` is in place.
Crucially, interrupt controllers (8259 PIC, IOAPIC, LAPIC) are now successfully utilizing the kernel's `vmm` implementations rather than userspace emulation.

==== Open Items & Call for Help

While the heavy lifting is complete, there are key areas where community contributions would be highly valued to get this merged upstream:

- Guest SMP Support: Currently, the guest is limited to 1 vCPU.
  We are looking for assistance in debugging the existing loop/thread handling in the backend to enable multi-CPU support.
- Device Offloading: The RTC and HPET timers are currently still emulated in userspace by QEMU.
  These need to be reworked to use the `vmm` in-kernel versions for better performance and correctness.
- General Stability: As with any hypervisor backend, we need help with edge-case testing and stress testing across different guest OS types.

I would like to thank Google for the sponsorship, and the FreeBSD Project for the mentorship and opportunity to contribute to the system.

Sponsor: Google Summer of Code 2025