## Summary Add SEV-SNP IGVM launch support to the MSHV backend. OpenVMM can now launch a measured Linux direct guest from IGVM-provided launch state instead of rebuilding the BSP VMSA in the VMM. MSHV consumes the IGVM SNP policy, BSP VMSA, and optional ID block and authentication data. It validates the IGVM platform and VMSA configuration, preserves measured page-import order, keeps stable userspace backing for the VMSA, submits the policy and optional identity during launch completion, and activates the imported VMSA through the SEV control register. ## Implementation Prepare the IGVM SNP configuration before partition build. Validate the requested VTL, shared GPA boundary, relocation metadata, VMSA GPA and feature set, and IGVM VP contexts against the configured topology. Add shared SNP ID-block serialization helpers to `virt` and use them to build the MSHV PSP launch-finish payload. When identity data is present, OpenVMM supplies the launch digest, image identity, guest SVN, signatures, public keys, and key algorithms, and enables the ID-block and author-key flags. Extend the Linux direct IGVM generator and manifest configuration with a restricted-injection image variant. The generated VMSA records the selected injection mode, which MSHV preserves when it imports the VMSA. Standard interrupt injection remains supported. Update the OpenVMM CLI and manifest documentation for MSHV SNP IGVM boot. ## Current limitations MSHV SNP IGVM boot currently supports VTL0, with no relocation metadata and no shared GPA boundary.
OpenVMM
OpenVMM is a modular, cross-platform Virtual Machine Monitor (VMM), written in Rust.
Although it can function as a traditional VMM, OpenVMM's development is currently focused on its role in the OpenHCL paravisor.
This repo is the home for both projects.
For more information, read our guide or our introductory blog post.
Getting Started
For info on how to run, build, and use OpenVMM, check out the The OpenVMM Guide.
The guide is published out of this repo via Markdown files. Please keep them up-to-date.
The maintainers of this project use Discord to collaborate with external contributors and users. Please join if you have any questions about contributing to or using OpenVMM/OpenHCL.
Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit Contributor License Agreements.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.