Repin OpenVMM to microVM v2.1 - #250
Merged
Pedro Henrique Penna (ppenna) merged 1 commit intoSep 30, 2026
Merged
Pedro Henrique Penna (ppenna) merged 1 commit into
Pedro Henrique Penna (ppenna) merged 1 commit into
Conversation
Copilot started reviewing on behalf of
Pedro Henrique Penna (ppenna)
September 29, 2026 07:55
View session
Contributor
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
The pin imports a 162-commit behavioral promotion whose source review and exact-head CI remain incomplete.
Review effort: Balanced
Findings: None
What changed in this PR
Repins NVX to the OpenVMM microVM v2.1 stack and tracks its release branch.
Changes:
- Updates the OpenVMM gitlink to
eb32b1652. - Changes submodule tracking from
maintomicrovm/v2.1.
| File | Description |
|---|---|
.gitmodules |
Tracks the microVM v2.1 branch. |
openvmm |
Pins the corresponding OpenVMM revision. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/sync-upstream-main-create-microvm-v21
branch
from
September 30, 2026 01:25
023f5c6 to
8ccc5cc
Compare
Copilot started reviewing on behalf of
Pedro Henrique Penna (ppenna)
September 30, 2026 01:26
View session
Promote the `openvmm` submodule to `eb32b1652`, the head of the new nanvix/openvmm `microvm/v2.1` branch, and track that branch in `.gitmodules` instead of `main`. `microvm/v2.1` rebases the 161-commit microVM stack from nanvix/openvmm `main` (`5cfdf9220`) onto microsoft/openvmm `main` at `e1cdbd916`, which nanvix/openvmm `upstream/main` now mirrors. It also carries `e2c982abc`, the listener endpoint rebinding fix (nanvix/openvmm#99), which the previous pin already includes. NVX therefore keeps the behavior that `dev` pins today. The rebase picks up 27 upstream commits. `git range-diff` against the previous stack reports 139 unchanged commits and 23 changed commits. No commit was added or dropped. The changed commits carry conflict resolutions and adaptations to upstream API changes: structured `--uefi` options, PCIe placement for virtio devices, isolation-aware MSHV partition creation, and the petri initrd builder. Each adaptation is folded into the commit that introduced the affected code. Upstream assigns the new `VMConfig.disable_vmbus` and `disable_hv` flags to fields 16 and 17. NVX clients already use those fields for `crash_dump_path` and `machine_profile`, so the fork moves the flags to fields 20 and 21. Validation on bare-metal hosts, in isolated checkouts, used guest artifacts built with Docker from these sources: - Linux/KVM: NVX verify and CLI tests; `test-microvm` for every Alpine scenario at 1, 2, 4, and 8 vCPUs; the Ubuntu smoke, extended, and sandbox tests; `test-openvmm` (58 of 58); `test-openvmm-unit` (4535 tests and 82 doc tests); and the CI-equivalent benchmark. - Linux/MSHV: the same checks without the KVM-only extended Ubuntu set; `test-openvmm` (57 of 57); `test-openvmm-unit` (4535 tests and 82 doc tests); and the CI-equivalent benchmark with the musl binary. - Windows/WHP: the same checks as MSHV; `test-openvmm` (29 of 29); `test-openvmm-unit` (4235 tests and 82 doc tests); and the CI-equivalent benchmark. - A same-host benchmark A/B against the previous pin on all three hosts found no regression beyond run-to-run noise. On MSHV, the collector rejected the first run of each revision, which started right after a build, for unstable snapshot generation. The reruns on the idle host passed. On WHP, the v2.1 acceptance run needed the single CI retry for the same check. - OpenVMM clippy with Rust 1.95.0 is clean across the workspace on Linux and Windows, and `cargo xtask fmt` passes. NVX ruff, pyright, shellcheck, shfmt, and the Specula tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/sync-upstream-main-create-microvm-v21
branch
from
September 30, 2026 03:17
8ccc5cc to
a9edfab
Compare
Copilot started reviewing on behalf of
Pedro Henrique Penna (ppenna)
September 30, 2026 03:18
View session
Pedro Henrique Penna (ppenna)
deleted the
agents/sync-upstream-main-create-microvm-v21
branch
September 30, 2026 03:51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Repin OpenVMM to microVM v2.1
This PR pins the
openvmmsubmodule toeb32b165271d9a12773ae4333377549cb0cc7f71,the head of the new nanvix/openvmm
microvm/v2.1branch. It also changes thebranch that
.gitmodulestracks frommaintomicrovm/v2.1. Those two pathsare the only changes.
microvm/v2.1→upstream/main)e2c982abc(Restore listener endpoint rebinding nanvix/openvmm#99 on top of nanvix/openvmmmain5cfdf9220)eb32b1652, which is5cfdf9220's 161-commit microVM stack rebasedonto microsoft/openvmm
mainate1cdbd916, pluse2c982abc. nanvix/openvmmupstream/mainnow mirrorse1cdbd916.023f5c6ebb754cf3d0f0f50ffc17e6f8934df4d1, directly ondev220b4f4Equivalence
git range-diff e7de393fe..e2c982abc e1cdbd916..eb32b1652reports 139 unchangedcommits and 23 changed commits. No commit was added, dropped, or reordered. The
changed commits carry conflict resolutions against 27 upstream commits and
adaptations to upstream API changes. The review PR lists each one. The tree
differs from the previous pin by the upstream changes and those adaptations, so
this is a behavioral promotion, not a tree-identical one.
One change is visible to management clients. Upstream assigns the new
VMConfig.disable_vmbusanddisable_hvflags to protobuf fields 16 and 17, butNVX clients already use those fields for
crash_dump_pathandmachine_profile.The fork therefore moves the two flags to fields 20 and 21 and keeps every
existing NVX tag.
Validation
Validation ran on bare-metal hosts, in isolated checkouts, with guest artifacts
built with Docker from these sources. The OpenVMM correctness and benchmark runs
used NVX
52c9a0bb6. That commit makes the same two-path change on the previousdevtip5edac1c. The newerdevcommits change only performance baselines,doc/usage.md, and sandbox network-list validation, and none of them affectsOpenVMM or guest inputs. At this PR head, NVX
verify, the CLI tests, and theUbuntu sandbox smoke test were rerun on all three hosts.
test-microvm, Alpine (every scenario; 1/2/4/8 vCPU)test-openvmmtest-openvmm-unite2c982abcfound no regression beyondrun-to-run noise. On MSHV, the collector rejected the first run of each revision,
which started right after a build, for unstable snapshot generation. The reruns
on the idle host passed. On WHP, the v2.1 acceptance run needed the single CI
retry for the same check.
Windows, and
cargo xtask fmtpasses. All 162 commits ofmicrovm/v2.1passcargo check --workspace --all-targetswith Rust 1.95.0 on both Linux and Windows.tests, and the PowerShell syntax check pass.
CARGO_PROFILE_DEV_DEBUG=line-tables-onlyandCARGO_INCREMENTAL=0. The MSHVand WHP hosts used the default profile.
passed on attempt 2 at this head. Attempt 1 passed every job except the Linux/MSHV
virtual-machine platform benchmark. That job's collector rejected acceptance
samples as unstable snapshot generation (p50 25.9% above p25, limit 25%). The
rerun of the failed jobs passed, and the performance regression gate passed all
111 checks.