Enable private listener rebinding for restored clones - #201
Pedro Henrique Penna (ppenna) merged 10 commits into
Conversation
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The OpenVMM pin is stale against current dev, and diagnostic coverage and documentation need correction.
Get a fresh assessment by requesting another Copilot review.
Review effort: Balanced
Findings: 1
Open (3)
What changed in this PR
Repins OpenVMM for private listener rebinding and adds guest restore diagnostics.
Changes:
- Updates the OpenVMM revision.
- Documents listener identity rotation.
- Emits restore-stage and failure markers.
| File | Description |
|---|---|
openvmm |
Updates the OpenVMM gitlink. |
alpine/nvx-snapshot |
Adds console diagnostics. |
doc/design/snapshot-and-restore.md |
Documents listener rebinding. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Repin OpenVMM to permit fresh boot and authenticated control listener endpoints while preserving the authoritative saved attachment contract. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Emit bounded non-secret restore stage and failure markers to the boot console while retaining fail-closed VM termination. Add a focused source-contract assertion at the helper's canonical guest/common path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
de03602 to
14bad9a
Compare
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The restore documentation remains incomplete and contradictory, and nonfatal console diagnostics lack behavioral coverage.
Get a fresh assessment by requesting another Copilot review.
Review effort: Balanced
Findings: 1
Open (4)
Resolved since last review (1)
Exercise non-fatal console diagnostics and fail-closed termination, assert restore-stage ordering, and align the listener identity contract across the design documentation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
The listener contract documentation remains inaccurate, the PR conflicts with dev, and the security-sensitive OpenVMM revision lacks completed source review and checks.
Review effort: Balanced
Findings: 1
Open (1)
Preserve the reviewed listener rebinding, diagnostics, and review fixes while adopting the current MP-table, TTRPC, CI, and release changes from dev. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Describe listener rebinding as an optional restore-caller capability, retain the full saved attachment contract, and require clone orchestrators to provide fresh private endpoints. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Consume the reviewed ordering fix that validates fresh listener replacements before reconstructing obsolete saved endpoints. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Redirect stderr before opening /dev/console and require the behavioral regression test to observe only the intended fail-closed message. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
Snapshot security behavior depends on an upstream revision whose exact-head CI is still pending and whose E2E validation used patch-equivalent earlier revisions.
Review effort: Balanced
Findings: None
Resolved since last review (1)
Replace the superseded merge-history head with nanvix/openvmm#95's single commit on current main. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Frame the restored scratch byte with an explicit suffix and parse it from the raw console stream so concurrent kernel output cannot turn a correct restore into a false wrong-backing failure. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Consume nanvix/openvmm#95's CLI documentation and functional named-pipe restore tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>



Summary
Repin current NVX
devto the OpenVMM listener-rebinding change and add bounded guest restore-stage diagnostics at the canonical shared helper path.Why
The saved snapshot contract requires a restore-time listener attachment to equal the captured attachment byte-for-byte, including its Unix socket pathname. ACI must rotate the boot console, authenticated control socket, capability, and VMM generation for every restore. Reusing the source path would collide across independent clone restores and violate the source-generation security boundary.
Changes
devpin4af1b9674f6a707c55b9059a06c529a023ceadb7to46b4a7bd7423e0c73e7249cd0b0a78beb455df1f.main; only listener endpoint identity rotates while the stable attachment contract remains captured.guest/common/nvx-snapshotwhile retaining fail-closed termination.Current-head validation
7bdcdf40dd6df57f71d64f31d9f2b9ec5ab10fa4is based on currentdev.scripts/test_microvm_tests.py: 61 passed.scripts/test_nvx_tools.py: 223 passed.sh -n guest/common/nvx-snapshotpassed.ruff checkandruff format --checkpassed for the modified Python test.cargo +1.95 fmt -p openvmm_entry --checkpassed.Authenticated E2E provenance
Pedro used NVX
de0360220896e9b3ae12a81c2858a918f63fc3adand OpenVMM0f1681d512a7a4a0d26b6c6c745568046cebb263. The two OpenVMM restack commits have identical stable patch IDs, and the guest marker patch is identical at its movedguest/commonpath.bf0a0ce173800ca551402dc80e85131bb2d2775b5368a0e36877d548755d7ce4.893c84c37e2ca925f867b088e243fa36bf2d0d20eb797011466bf9349d24636b.The candidate is content-authenticated
unsignedValidationOnly, not production-signed. The unrelated newerdev/OpenVMMmainbase code in the restacked PR head was not rebuilt into that candidate or rerun on Pedro; the E2E claim applies to the explicitly listed authenticated source revisions and patch-equivalent listener/helper changes.