Windows OS Platform Blog:
In late 2024, we announced the open sourcing of the OpenVMM project. This blog covers how the project has grown since then while also providing context into the motivation behind building OpenVMM.
What is OpenVMM?
A virtualization platform comprises 3 primary general components: Firstly, there is the Hypervisor - privileged software that interfaces with the underlying hardware to provide low-level primitives for executing virtual machines (VMs). Secondly, there is the Virtual Machine Manager (VMM) -software that leverages hypervisor interfaces to provide the general capabilities of running VMs and managing their lifecycle. Lastly, there is the host OS on which the VMM runs, which provides networking and storage access. OpenVMM is an open-source, cross-platform VMM project written in Rust. The project is MIT Licensed and developed openly at microsoft/openvmm on GitHub.How has OpenVMM grown since it was open sourced?
In late 2024, we announced the open sourcing of the OpenVMM project. Since then, our active developer community has grown to almost 100 contributors, with over 200 forks. The OpenVMM project has benefited from strong ongoing contributions from industry partners like Intel and Arm, which have helped the project evolve and mature in several aspects, including:- Cross-platform virtualization
- Improvements include virt_mshv aarch64 support and virt_kvm correctness fixes.
- Device model and device emulation
- New support includes emulated SMMUv3 for aarch64 VMs, CXL emulation, PCIe NUMA and ACS configuration exposure, support for the modern VFIO cdev + iommufd device assignment interface (alongside the existing legacy group/container + Type1v2 path), and full netvsp VLAN support.
- Test infrastructure, CI, build and release engineering
- Improvements to the testing framework petri based on community feedback include physical NVMe test plumbing, CXL coverage, transparent-huge-page enablement, and richer halt-reason reporting for easier debugging.
- Improvements in CI and build engineering and new build support for Azure Linux.
- Confidential computing
- Thanks to contributions from Intel, we developed General Availability paravisor support for Intel TDX Confidential VMs in Azure in the open (over 50 GitHub issues), and then strongly focused on changes that have led to real, substantial performance improvements (such as reducing CVM performance overhead from about 3% to now 1% in CPU/memory intensive workloads).
- Thanks to contributions from Arm, support for an entirely new confidential architecture, Arm CCA Realm is underway; initial Arm CCA enablement for OpenHCL and TMK test infrastructure is complete!
- Thanks to the partnership with AMD, we continue enhancing paravisor performance and debugging for AMD SEV-SNP Confidential VMs with changes like Virtual NMI and openhcl_boot serial logging for SEV-SNP.
- We continue growing paravisor attestation and sealing capabilities such as adding support for stateless Confidential VM mode with hardware sealing policy.
Why OpenVMM?
The motivation behind building OpenVMM comes from three of its core characteristics; cross-platform, distributed and flexible, and its modern security architecture.Cross-platform
There is a need for a VMM that works consistently across Windows and Linux and across multiple hypervisors. Broad cross-platform support is one of the design principles of, as well as one of the key motivations for developing OpenVMM. OpenVMM supports a variety of host operating systems including Linux, Windows, and macOS, and a variety of virtualization backends including MSHV, WHP, KVM and hypervisor.framework. It also supports both x64 and AArch64 architectures.Distributed and flexible
OpenVMM is designed to be a collection of VMM components that can be combined to build specialized VMMs custom tailored to power specific scenarios. Although OpenVMM can run as a traditional VMM on the host, it is designed so that its runtime functionality can be split across multiple environments, like running in a paravisor inside a guest VM. In fact, our goal of running OpenVMM inside a paravisor environment, and this scenario’s unique threading model requirements, was one of the reasons OpenVMM was created. The ability to use OpenVMM in a variety of environments simultaneously is enabled by OpenVMM’s modular design and internal message-passing architecture. Components can be reused in different scenarios without being tied to the broader “block diagram”.OpenVMM is also flexible in terms of the wide range of scenarios in can support. It can optimize modern workloads while also supporting legacy workloads. For instance, today OpenVMM supports different boot modes: UEFI, BIOS and Linux Direct Boot, and it has wide device support across direct assigned devices, para-virtualized devices (both Virtio and VMBus), and emulated devices: vTPM, NVMe, serial UARTs and legacy x86 (i440BX + PIIX4 chipset, IDE HDD/Optical, Floppy, PCI, VGA graphics). In fact, Azure compatibility has also been a goal, which is why OpenVMM has support for the Microsoft Hypervisor ABI and all Hyper-V emulated and para-virtualized devices. Going back to OpenVMM’s modular design, one can choose a subset of the Hyper-V guest interface, or an alternate interface altogether, for new scenarios with different requirements.
Modern security architecture
OpenVMM aims to have a modern, secure design. It does this, firstly, by implementing as much virtualization functionality (emulation, instruction completion, paravirtualized devices, and memory management) in user mode as possible. This can improve security via hardware memory protection and enhanced exploit mitigations, and it also makes it easier to service the code, diagnose issues, and mitigate problems in the field, enabling faster patching of security vulnerabilities. Secondly, OpenVMM uses powerful process sandboxing, allowing unrelated VMM functionality to run in separate processes. On Windows, this sandboxing is backed by least-privileged app containers (LPAC), while on Linux it’s supported by kernel namespaces and (in the future) SeLinux.Lastly, like with many newer VMMs, OpenVMM is written in Rust, which reduces the opportunity for programming error leading to guest escape. With Safe Rust, programmers do not have to worry about type-safety or memory-safety... about the possibility of a dangling pointer, a use-after-free, or other kinds of Undefined Behaviors (which became known as nasal demons in 1992 for good reason). The OpenVMM community has been actively involved in Rust since the early days, driving the compiler and libraries forward. OpenVMM was one of the five case studies used by the Rust async working group to evaluate the utility of the stabilized MVP version of async functions in traits (OpenVMM is the Microsoft tool cited in Rust’s blog Stabilizing async in traits in 2023)! There are many other great security initiatives in Rust that OpenVMM benefits from: ongoing efforts are regularly creating new open-source security tools for Rust developers, conducting audits and threat models and developing a collaborative team of Rust security experts.
Conclusion
Today, we covered why the OpenVMM project started and how it has grown since it was open sourced. Microsoft is committed to working across open-source projects and supporting multiple VMMs for customers, alongside OpenVMM. Our goal is to give customers choices to find the solution that best meets their requirements based on their workloads and provide the performance and strong isolation capabilities of the Microsoft Hypervisor - which is used in Azure, on-prem, and Client scenarios - to a wide range of VMMs in various virtualization topologies and operating systems. For example, we are working on Cloud-hypervisor and Hyperlight which power Azure workloads, and we are also investing in broad compatibility, getting a wide range of VMMs including QEMU to run with the Microsoft Hypervisor to support diverse Linux workloads in Azure.- Core OS Team.
Source:
The OpenVMM Project | Microsoft Community Hub
What is OpenVMM? A virtualization platform comprises 3 primary general components: Firstly, there is the Hypervisor - privileged software that interfaces...









