Skip to content

Repin OpenVMM to microVM v2.1 - #250

Merged
Pedro Henrique Penna (ppenna) merged 1 commit into
devfrom
agents/sync-upstream-main-create-microvm-v21
Sep 30, 2026
Merged

Pedro Henrique Penna (ppenna) merged 1 commit into
devfrom
agents/sync-upstream-main-create-microvm-v21

Conversation

@ppenna

@ppenna Pedro Henrique Penna (ppenna) commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Repin OpenVMM to microVM v2.1

This PR pins the openvmm submodule to eb32b165271d9a12773ae4333377549cb0cc7f71,
the head of the new nanvix/openvmm microvm/v2.1 branch. It also changes the
branch that .gitmodules tracks from main to microvm/v2.1. Those two paths
are the only changes.

Equivalence

git range-diff e7de393fe..e2c982abc e1cdbd916..eb32b1652 reports 139 unchanged
commits 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_vmbus and disable_hv flags to protobuf fields 16 and 17, but
NVX clients already use those fields for crash_dump_path and machine_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 previous
dev tip 5edac1c. The newer dev commits change only performance baselines,
doc/usage.md, and sandbox network-list validation, and none of them affects
OpenVMM or guest inputs. At this PR head, NVX verify, the CLI tests, and the
Ubuntu sandbox smoke test were rerun on all three hosts.

Check Linux/KVM Linux/MSHV Windows/WHP
test-microvm, Alpine (every scenario; 1/2/4/8 vCPU) pass pass pass
Ubuntu smoke and sandbox smoke pass pass pass
Ubuntu extended (KVM only) pass n/a n/a
test-openvmm 58/58 57/57 29/29
test-openvmm-unit 4535 passed, 82 doc tests 4535 passed, 82 doc tests 4235 passed, 82 doc tests
CI-equivalent benchmark (34 one-vCPU metrics and multi-vCPU restore) pass pass pass
  • A same-host benchmark A/B against e2c982abc 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. All 162 commits of microvm/v2.1 pass cargo check --workspace --all-targets with Rust 1.95.0 on both Linux and Windows.
  • NVX ruff, ruff format, pyright for both platforms, shellcheck, shfmt, the Specula
    tests, and the PowerShell syntax check pass.
  • The bare-metal KVM host has a 98 GB disk, so its unit-test build used
    CARGO_PROFILE_DEV_DEBUG=line-tables-only and CARGO_INCREMENTAL=0. The MSHV
    and WHP hosts used the default profile.
  • CI run 36539477824
    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.

Copilot AI balanced review requested due to automatic review settings September 29, 2026 07:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 main to microvm/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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The current pin lacks matching provenance and completed exact-head validation.

Review effort: Balanced
Findings: None

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>
@ppenna
Pedro Henrique Penna (ppenna) force-pushed the agents/sync-upstream-main-create-microvm-v21 branch from 8ccc5cc to a9edfab Compare September 30, 2026 03:17
Copilot AI balanced review requested due to automatic review settings September 30, 2026 03:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The submodule still tracks main, and validation evidence does not cover the newly rewritten OpenVMM head.

Review effort: Balanced
Findings: None

@ppenna
Pedro Henrique Penna (ppenna) merged commit 1cb930f into dev Sep 30, 2026
24 checks passed
@ppenna
Pedro Henrique Penna (ppenna) deleted the agents/sync-upstream-main-create-microvm-v21 branch September 30, 2026 03:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants