Jake Oshins 2d3b0a9768 intel_vtd: scalable second-stage translation lookup (#4577)
## Summary

Follow-up to microsoft/openvmm#4573. Adds scalable-mode RID-based
second-stage translation lookup and shared page-table validation. New
scalable/A/D capabilities remain unadvertised until the later
implementation stages are complete.

## Changes

- Dispatch translation using the SRTP-latched table mode and resolve
scalable root, context, PASID-directory and PASID-table entries from
guest memory.
- Support implied RID_PASID, second-stage translation and scalable
pass-through without extending the DMA API.
- Validate structure fields, supported widths, permissions, page
sizes/alignment, checked addresses and output limits.
- Preserve original requester/address information and qualified
fault-suppression behavior.
- Retain legacy pass-through compatibility for supported 39-bit and
48-bit AW values; unsupported encodings and address limits remain
enforced. This intentionally tolerates existing guest-driver behavior
while the specification still requires software to program the largest
AGAW.
- Add raw-memory regressions for legacy malformed entries, width
boundaries, blocked DMA and fault records, including top-level SSPTPTR
access reporting and architectural FI masking.

## Validation

`cargo check -p intel_vtd`, `cargo clippy --all-targets -p intel_vtd`,
`cargo doc --no-deps -p intel_vtd` and `cargo xtask fmt --fix` passed on
the rebased branch. `cargo nextest run --profile agent -p intel_vtd`:
166 passed, none skipped. Formatting ran last.

Tracking-enabled scalable translations still fail closed here until the
atomic A/D stage. First-stage, extended-accessed, nested, tagged-PASID,
ATS/PRI and supervisor features remain unsupported. The withdrawn
unsupported-TTM fault-code proposal was not applied.

## Stack

The existing fork counterpart is jakeatmicrosoft/openvmm#2. The later
atomic A/D and capability-advertising drafts remain
jakeatmicrosoft/openvmm#4 and jakeatmicrosoft/openvmm#6. The stack was
rebased onto current upstream with unchanged PR patches and preserved
backup refs.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-08 01:25:05 +00:00
2026-09-30 17:21:30 +00:00
2026-10-05 13:02:15 -04:00
.
2024-10-03 13:21:23 -07:00
2026-10-05 13:02:15 -04:00
.
2024-10-03 13:21:23 -07:00
2025-12-19 22:20:27 +00:00

OpenVMM

Build Status

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.

S
Description
No description provided
Readme MIT 105 MiB
Languages
Rust 98.5%
TypeScript 0.6%
Python 0.3%
PowerShell 0.2%
JavaScript 0.1%