Repository navigation
doc: add CPU profiles and the RAM overlay to the configuration boundary - #454
Merged
Pedro Henrique Penna (ppenna) merged 1 commit intoOct 9, 2026
Merged
Conversation
The configuration boundary predates OpenVMM's CPU profiles, the time ABI as the only microVM time path, and the nvx_overlay_upper=ramfs block layout. State that the microVM requires the time ABI, how a cold boot selects its CPU profile and how restore pins it, and that the RAM-backed overlay replaces scratch and rules out snapshots. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot started reviewing on behalf of
Pedro Henrique Penna (ppenna)
October 9, 2026 19:11
View session
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The restore rule conflicts with the linked detailed CPU-profile contract.
1 open finding
What changed in this PR
Updates the configuration boundary to reflect current OpenVMM CPU-profile, time ABI, and RAM-overlay behavior.
Changes:
- Documents CPU-profile selection and restore constraints.
- Adds the scratchless RAM-overlay block layout.
| File | Description |
|---|---|
doc/design/configuration-boundary.md |
Expands the documented microVM configuration contract. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| captured capacity. | ||
| Restore always uses the snapshot's CPU profile, never falls back, and requires | ||
| the host's CPU to belong to that profile's generation; an explicit | ||
| `--cpu-profile` must be `auto`, the snapshot's profile ID, or `host` when the |
Pedro Henrique Penna (ppenna)
deleted the
doc-sync/configuration-boundary
branch
October 9, 2026 19:35
This was referenced Oct 9, 2026
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.

Summary
The configuration boundary design chapter was last edited on 2026-09-28. Since then, OpenVMM made the time ABI the microVM's only time path, added CPU profiles, and added the scratchless
nvx_overlay_upper=ramfsblock layout. The chapter's existing claims are still correct, but it doesn't mention any of these inputs, and its block paragraph implies that blocks always end with scratch. This PR adds them to the chapter and links to the chapters that define them instead of repeating their detail.OpenVMM source of truth: pinned submodule
3796991d52ce07d88b5dba25e4d1e8deaff6fd95(origin/dev57b4a428218951778794931b18d10f99b8ee7583).Changes
All paths below are in the pinned
openvmm/submodule.doc/design/configuration-boundary.mdopenvmm/openvmm_defs/src/microvm.rsvalidate_machine_config("the microVM profile requires the NVX time ABI parameters");openvmm_defs/src/time_abi.rsTimeAbiParameters("Time ABI parameters of every microVM worker", carryingcpu_profile); OpenVMM commit12b4f6083"make the NVX time ABI the only microVM time path"--cpu-profile: a pinned ID,auto(the default), orhostopenvmm_entry/src/cli_args/microvm.rs(--cpu-profiledoc comment);openvmm_entry/src/microvm/config.rs(unwrap_or("auto"))autoopenvmm_entry/src/ttrpc/microvm.rs(None => ("auto".to_owned(), 0)for cold boot)autofalls back with a warning to a host profile only on an Intel or AMD CPU that no pinned profile servesopenvmm_core/src/worker/dispatch/time_abi.rsfalls_back,FALLBACK_MARKER;vmm_core/cpu_profile/src/derive.rssupports_host_profiles--cpu-profilemust beauto, the snapshot's ID, orhostfor a host-profile snapshotopenvmm_helpers/src/snapshot/time.rspreflight_time_abi_restore(theE_PROFILE_UNKNOWNcheck andcheck_generation);openvmm_entry/src/microvm/config.rs(restore takesrecord.id)nvx_overlay_upper=ramfsis passed. That token requires exactly one read-onlydistroblock and no scratch, and it rules out snapshot capture and restoreopenvmm_defs/src/microvm.rsramfs_overlay_requested,validate_microvm_sandbox_blocks;openvmm_entry/src/cli_args/microvm.rs("microVM RAM-backed overlay does not support snapshot or restore")I also re-checked the chapter's existing claims against the pin and found no errors. They cover management-RPC profile value 2 (values 1, 3, and 4 reserved), the 1/2/4/8-vCPU topology, 128-MiB RAM alignment, the rejection of unroled
--virtio-blk, raw-file block requirements, the capture rule of "at least one lower layer and scratch", the management RPC's singlemicrovmvirtio-fs share with no NIC or blocks, and restore's rejection of--net, workload-identity, and lifecycle options.Conservative choices:
Follow-ups (out of scope)
doc/design/machine-and-device-abi.mdstill says that scratch is the required final writable role, which contradicts theramfslayout. This was raised in doc: sync cold boot with the second share and RAM overlay #442's review. The file is changed by open PRs test-microvm: pause and resume a microVM through OpenVMM state control #405 and Adopt bind-once microVM image slots #406, so this PR leaves it alone.--snapshot-scratch-restore-mode(private-copy,copy-on-write,direct-claimed), from OpenVMM commits92205a8ceand0eccda895, isn't documented anywhere indoc/. It belongs indoc/design/snapshot-and-restore.md, which open PRs Adopt bind-once microVM image slots #406 and Support filesystem-only streamed microVM snapshots #417 change.doc/guests/ubuntu-guest.mdanddoc/design/sandbox-filesystem-and-agent-architecture.mdlist the workload's private mount, PID, and UTS namespaces but don't say that it shares the guest's IPC namespace.guest/alpine/nvx-container-launchrunsunshare --mount --pid --uts. This was raised in doc: describe the implemented Ubuntu guest instead of its proposal #453's last review.scripts/setup/README.mdis documentation outsidedoc/. Moving it requires editing its links indoc/ci.mdanddoc/setup.md, which open PRs test-microvm: pause and resume a microVM through OpenVMM state control #405 and Adopt bind-once microVM image slots #406 change.doc/openvmm-upstream-roadmap.mddescribes OpenVMM fork tip2728f33ea, which is 133 commits behind the current pin. It needs a full regeneration, not a doc-sync edit.Validation
python -m unittest scripts.test_nvx_tools.CliTests scripts.test_performance.PerformanceTests:Ran 110 tests,OK (skipped=1).doc/design.md,doc/design/time-abi.md). Every relative link and anchor resolves, the changed file has one H1 and balanced code fences, anddoc/design.mdlinks every chapter indoc/design/. Result: OK.git diff --check: clean.python scripts\nvx.py verify: passed. The submodule is at the pinned3796991d.^(doc/|.*\.md$), so CI treats this PR as documentation-only.