From 99987e5b9cc97f841baac9864a623296636afed7 Mon Sep 17 00:00:00 2001 From: Pedro Henrique Penna Date: Sun, 11 Oct 2026 14:51:12 -0300 Subject: [PATCH 1/2] openvmm: pin partition halt state across snapshots 70dde4c65 (fix/snapshot-halt-state in nanvix/openvmm, nanvix/openvmm#129) stacks on 2130f24b5, which dev already pins and nanvix/openvmm main holds. It is Ruize Tang's 320f31ff7 rebased onto main without conflicts, with the fixes for that pull request's review folded in. A partition that halted before a snapshot, because the guest powered off, reset, or triple-faulted, or because a debugger stopped it, saved no halt reason, and its restore left halted state as a TODO. The restored partition therefore ran its vCPUs again and reported no halt, so a guest could continue past a power-off that it had already requested. The partition's saved state now records the first halt reason in an optional field. A restore latches the vCPU halt again and reports the halt to the client, or to an attached debugger, as the original halt did, so the VM controller applies its guest power action to it. A restore over a halt that the partition recorded, or that a vCPU raised but the partition has not recorded yet, fails before it restores any state instead of merging the two. A partition that is not halted saves no halt reason, so its saved state keeps the bytes that it had before and existing snapshots restore as they did. A build without this change skips the unknown field and restores a halted snapshot unhalted, as before. Unit tests cover the saved field, the vCPU halt latch, and the save and restore of halted and running partition units. nvx.py verify passes with this pin. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- openvmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openvmm b/openvmm index 2130f24b5..70dde4c65 160000 --- a/openvmm +++ b/openvmm @@ -1 +1 @@ -Subproject commit 2130f24b5a51561cc6224fe5a0aff93cb121ac32 +Subproject commit 70dde4c65b16de084744b0fa85aeb581f0b5c6cd From cc02b732989cbaf91400b7711e9e002c8aaac104 Mon Sep 17 00:00:00 2001 From: Pedro Henrique Penna Date: Sun, 11 Oct 2026 14:51:44 -0300 Subject: [PATCH 2/2] doc: index the OpenVMM commit that the halt-state pin adds The upstream roadmap indexes the OpenVMM commits between its mapped tip and NVX's pin, which moves from 2130f24b5 to 70dde4c65. Record the new pin, extend the branch DAG to position 309, and add position 309, which saves a halted partition's halt reason in its snapshots and latches and reports that halt again on restore. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- doc/openvmm-upstream-roadmap.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/openvmm-upstream-roadmap.md b/doc/openvmm-upstream-roadmap.md index fa4765c4f..64881a453 100644 --- a/doc/openvmm-upstream-roadmap.md +++ b/doc/openvmm-upstream-roadmap.md @@ -5,7 +5,7 @@ - OpenVMM fork base: `e1cdbd916d3aacb216309c8e7779b832546759a1`. - Mapped fork tip: `2728f33ea9a44d2d0fb956d9f01768ae2100fb62`, position 166. The graph, PR summary, and commit mapping below cover positions 001-166. -- NVX's pinned OpenVMM revision: `2130f24b5a51561cc6224fe5a0aff93cb121ac32`, 142 commits past the +- NVX's pinned OpenVMM revision: `70dde4c65b16de084744b0fa85aeb581f0b5c6cd`, 143 commits past the mapped tip on the same first-parent chain. These commits are not yet assigned to PRs; see [Commits after the mapped tip](#commits-after-the-mapped-tip). - Upstream main: `1fd455b19e7c69c72a2d375d0ed1cb35d901c688` (2026-10-01), 18 commits past @@ -199,7 +199,7 @@ e1cdbd916 -> PR18/PR23 split [162] -> PR18 fixup [163] -> PR25 fixup [164] -> PR27 [165-166] -> 2728f33ea (mapped tip) - -> unassigned [167-308] -> 2130f24b5 (NVX pin) + -> unassigned [167-309] -> 70dde4c65 (NVX pin) ``` For upstream review, PR01-PR08 and PR14 can be rebased independently onto current upstream main. @@ -215,7 +215,7 @@ can be submitted independently if preferred. ## Commits after the mapped tip -The NVX pin extends the chain past position 166 without merges. The 142 later commits are not +The NVX pin extends the chain past position 166 without merges. The 143 later commits are not yet classified or assigned to PRs. This table groups them by topic in chain order; ranges are inclusive, as in the [PR summary](#pr-summary). @@ -235,6 +235,7 @@ inclusive, as in the [PR summary](#pr-summary). | 299-301 | `3796991d5..e5bf79776` | 3 | Egress rules that select a protocol or a destination-port range, and IPv6 in the portable network profile | | 302-305 | `3072d7a91..7bf0ee28b` | 4 | Several host directories on one virtio-fs slot, their snapshot, and their path policy | | 306-308 | `be5297817..2130f24b5` | 3 | Single host files as aggregate virtio-fs children, their saved kinds, and the `file` flag that requests one | +| 309 | `70dde4c65` | 1 | Partition halt state across snapshots | Some of these commits change mapped work rather than add to it. Positions 255-259 remove the legacy microVM clock paths and change files that PR10 and PR17 also change. Position 261 makes