Skip to content

[DO NOT REVIEW] vmm_tests: run the KVP IC test on Windows Server 2025 (port of #4803) - #4816

Merged
Pedro Henrique Penna (ppenna) merged 2 commits into
feature/microvm/devfrom
copilot/vmm-tests-kvp-ic-server-2025
Oct 30, 2026
Merged

Pedro Henrique Penna (ppenna) merged 2 commits into
feature/microvm/devfrom
copilot/vmm-tests-kvp-ic-server-2025

Conversation

@ppenna

@ppenna Pedro Henrique Penna (ppenna) commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Ports #4803 to feature/microvm/dev, for microsoft/nvx#1035: the KVP IC VMM test boots Windows Server 2025 instead of Windows Server 2022, whose COM activation race can lose WMI's server-registration notification, so that the guest answers the test's GET_IP_INFO with 0x80080005 after 120 seconds. It stages the Server 2025 image for the x64 Linux KVM job, which keeps running the test, and excludes the test from the x64 Linux MSHV job, where Server 2025's required initial reset is unsupported.

Based on feature/microvm/dev. This branch is two commits directly on b58040ee4, the head of feature/microvm/dev since #4823 merged, which microsoft/nvx#1049 brings into NVX's dev.

Why

NVX runs the KVP IC test on its WHP runners. On 2026-10-30, it failed a dev run of NVX with KVP error: 80080005, 120.2 seconds after the test began to wait for the KVP IC, and the KVP channel's ring counters at the failure show that the guest answered GetIpInfo with that status. It is the only failure in 217 NVX runs of the test since 2026-10-27, but it turns NVX's required check red. #4803 diagnosed the same failure upstream and moves the test to Windows Server 2025, which has the fix. It is approved but not merged, so this ports it now.

Port of #4803 (2dec9edcb)

A cherry-pick of #4803's only commit, a73891221, with Steven Malis as its author. The test's image changes from windows_datacenter_core_2022_x64 to windows_datacenter_core_2025_x64, so its name becomes multiarch::ic::openvmm_uefi_x64_windows_datacenter_core_2025_x64_kvp_ic. Both commits have the patch ID 296ebafd9a4e, and ic.rs after this commit is #4803's, byte for byte. The message adds #4803's description, the port's purpose, and the cherry-pick trailer. Once #4803 lands on main, a rebase of the microVM chain onto it drops this commit.

Linux KVM image (3d7512af6)

Upstream's x64-linux-amd-kvm and x64-linux-intel-mshv jobs selected the moved test but downloaded only the Server 2022 image, so #4803's Linux jobs failed before running it, unable to resolve GEN2_WINDOWS_DATA_CENTER_CORE2025_X64. This stages the Server 2025 image for KVM, where the test passed in 18.552 seconds.

MSHV reaches the moved test but cannot complete Server 2025's required initial reset: two runs on different workers failed at the same point with HvCallSetVpRegisters error: Invalid parameter, while the Server 2022 test passed on the same base. The MSHV job therefore excludes this test and does not download its image; KVM and the Windows-host jobs retain coverage. cargo xflowey regen changes no generated pipeline.

Validation

Previous exact-head OpenVMM run 41012439247, attempt 4, passed at 6b409bd1035678a32faac3761c36e2219f7f8000. Follow-up exact-head OpenVMM run 41098528203, attempt 4, passed at 549a215121f1e691b34234c6ee39a1234fe9ff80. Attempts 1-3 each hit different unrelated SNP VM-start flakes; attempt 4 passed all 98 SNP tests. The Linux KVM and MSHV jobs both passed, with MSHV applying the exact KVP exclusion above. Rebased exact-head OpenVMM run 41133653556, attempt 1, passed at 3d7512af653717aa9123595e993a56cb8587106a.

Part of microsoft/nvx#1035.

@github-actions

Copy link
Copy Markdown

@ppenna
Pedro Henrique Penna (ppenna) force-pushed the copilot/vmm-tests-kvp-ic-server-2025 branch from b7d7a0b to 6b409bd Compare October 30, 2026 06:09
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
Pin microsoft/openvmm#4816 at 6b409bd1035678a32faac3761c36e2219f7f8000,
two commits on bcfc47cff, the previous pin and the head of
feature/microvm/dev since microsoft/openvmm#4818 merged.

OpenVMM's KVP IC test booted Windows Server 2022, whose COM activation
race can lose WMI's server-registration notification, so that the
guest answers the test's IP information request with 0x80080005 after
120 s. The race failed the test in the WHP run of dev at c938ab2. The
first commit ports microsoft/openvmm#4803 unchanged and moves the test
to Windows Server 2025, which has the fix. The second stages the Server
2025 image for the check-in gates' x64 Linux KVM job. It excludes the
test from the MSHV job, where Server 2025's required initial reset
consistently fails with HvCallSetVpRegisters returning Invalid parameter.

The test's name holds its image, so it is now
multiarch::ic::openvmm_uefi_x64_windows_datacenter_core_2025_x64_kvp_ic.
Rename it in OPENVMM_WHP_TESTS, and plan the WHP shards again with an
estimate of 57.4 s for it until CI's reports measure it: NVX's median
of 34.0 s on Server 2022 times 1.69, the mean ratio of the test's
durations on Server 2025 and 2022 on upstream's x64-windows-intel and
x64-windows-amd runners. The plan moves three other tests to balance
the shards, which take 128.4 and 128.3 s instead of 119.8 and 123.9 s,
so ci.md now gives the latter as the first plan's.

The KVM and MSHV filters select every test whose name contains openvmm
and left out Windows guests only by windows_datacenter_core_2022_x64,
so the renamed test would have joined them. Leave out every Windows
Server Datacenter Core test instead, and test that through the
substring form of nextest's test(), which the filters use.

The protocol vectors and built-in CPU profiles that nvx-rs copies are
unchanged.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
… roadmap

Record the two commits that the previous commit pins as positions 368
and 369 of the microVM chain, and move the NVX pin to 6b409bd10.

Position 368 makes the change of microsoft/openvmm#4803 unchanged: the
KVP IC test boots Windows Server 2025 instead of 2022, whose COM
activation race can fail the guest's answer to the test's IP
information request. Position 369 stages the Server 2025 image for the
check-in gates' x64 Linux KVM job. It excludes the test and its image
from the MSHV job, where Server 2025's required initial reset fails. A
rebase onto an upstream main that includes microsoft/openvmm#4803 drops
position 368 and reconciles position 369 with upstream's changes for
those jobs; say so in the table's remarks. The pin is now 212 commits
past the mapped tip.

Keep the re-checked chain in the scope: microsoft/openvmm#4807 merged
positions 360 and 361, microsoft/openvmm#4804 merged positions 362-365,
and microsoft/openvmm#4818 merged positions 366 and 367. Position 367,
bcfc47cff, is therefore the head of feature/microvm/dev, and
microsoft/openvmm#4816 proposes positions 368 and 369.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
Pin microsoft/openvmm#4816 at 6b409bd1035678a32faac3761c36e2219f7f8000,
two commits on bcfc47cff, the previous pin and the head of
feature/microvm/dev since microsoft/openvmm#4818 merged.

OpenVMM's KVP IC test booted Windows Server 2022, whose COM activation
race can lose WMI's server-registration notification, so that the
guest answers the test's IP information request with 0x80080005 after
120 s. The race failed the test in the WHP run of dev at c938ab2. The
first commit ports microsoft/openvmm#4803 unchanged and moves the test
to Windows Server 2025, which has the fix. The second stages the Server
2025 image for the check-in gates' x64 Linux KVM job. It excludes the
test from the MSHV job, where Server 2025's required initial reset
consistently fails with HvCallSetVpRegisters returning Invalid parameter.

The test's name holds its image, so it is now
multiarch::ic::openvmm_uefi_x64_windows_datacenter_core_2025_x64_kvp_ic.
Rename it in OPENVMM_WHP_TESTS, and plan the WHP shards again with an
estimate of 57.4 s for it until CI's reports measure it: NVX's median
of 34.0 s on Server 2022 times 1.69, the mean ratio of the test's
durations on Server 2025 and 2022 on upstream's x64-windows-intel and
x64-windows-amd runners. The plan moves three other tests to balance
the shards, which take 128.4 and 128.3 s instead of 119.8 and 123.9 s,
so ci.md now gives the latter as the first plan's.

The KVM and MSHV filters select every test whose name contains openvmm
and left out Windows guests only by windows_datacenter_core_2022_x64,
so the renamed test would have joined them. Leave out every Windows
Server Datacenter Core test instead, and test that through the
substring form of nextest's test(), which the filters use.

The protocol vectors and built-in CPU profiles that nvx-rs copies are
unchanged.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
… roadmap

Record the two commits that the previous commit pins as positions 368
and 369 of the microVM chain, and move the NVX pin to 6b409bd10.

Position 368 makes the change of microsoft/openvmm#4803 unchanged: the
KVP IC test boots Windows Server 2025 instead of 2022, whose COM
activation race can fail the guest's answer to the test's IP
information request. Position 369 stages the Server 2025 image for the
check-in gates' x64 Linux KVM job. It excludes the test and its image
from the MSHV job, where Server 2025's required initial reset fails. A
rebase onto an upstream main that includes microsoft/openvmm#4803 drops
position 368 and reconciles position 369 with upstream's changes for
those jobs; say so in the table's remarks. The pin is now 212 commits
past the mapped tip.

Keep the re-checked chain in the scope: microsoft/openvmm#4807 merged
positions 360 and 361, microsoft/openvmm#4804 merged positions 362-365,
and microsoft/openvmm#4818 merged positions 366 and 367. Position 367,
bcfc47cff, is therefore the head of feature/microvm/dev, and
microsoft/openvmm#4816 proposes positions 368 and 369.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
… roadmap

Record the two commits that the previous commit pins as positions 368
and 369 of the microVM chain, and move the NVX pin to 6b409bd10.

Position 368 makes the change of microsoft/openvmm#4803 unchanged: the
KVP IC test boots Windows Server 2025 instead of 2022, whose COM
activation race can fail the guest's answer to the test's IP
information request. Position 369 stages the Server 2025 image for the
check-in gates' x64 Linux KVM job. It excludes the test and its image
from the MSHV job, where Server 2025's required initial reset fails. A
rebase onto an upstream main that includes microsoft/openvmm#4803 drops
position 368 and reconciles position 369 with upstream's changes for
those jobs; say so in the table's remarks. The pin is now 212 commits
past the mapped tip.

Keep the re-checked chain in the scope: microsoft/openvmm#4807 merged
positions 360 and 361, microsoft/openvmm#4804 merged positions 362-365,
and microsoft/openvmm#4818 merged positions 366 and 367. Position 367,
bcfc47cff, is therefore the head of feature/microvm/dev, and
microsoft/openvmm#4816 proposes positions 368 and 369.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@ppenna
Pedro Henrique Penna (ppenna) force-pushed the copilot/vmm-tests-kvp-ic-server-2025 branch from 6b409bd to 549a215 Compare October 30, 2026 17:24
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
Pin microsoft/openvmm#4816 at 549a215121f1e691b34234c6ee39a1234fe9ff80,
two commits on 5e0ab772e, the previous pin and the head of
feature/microvm/dev since microsoft/openvmm#4820 merged.

OpenVMM's KVP IC test booted Windows Server 2022, whose COM activation
race can lose WMI's server-registration notification, so that the
guest answers the test's IP information request with 0x80080005 after
120 s. The race failed the test in the WHP run of dev at c938ab2. The
first commit ports microsoft/openvmm#4803 unchanged and moves the test
to Windows Server 2025, which has the fix. The second stages the Server
2025 image for the check-in gates' x64 Linux KVM job. It excludes the
test from the MSHV job, where Server 2025's required initial reset
consistently fails with HvCallSetVpRegisters returning Invalid parameter.

The test's name holds its image, so it is now
multiarch::ic::openvmm_uefi_x64_windows_datacenter_core_2025_x64_kvp_ic.
Rename it in OPENVMM_WHP_TESTS, and plan the WHP shards again with an
estimate of 57.4 s for it until CI's reports measure it: NVX's median
of 34.0 s on Server 2022 times 1.69, the mean ratio of the test's
durations on Server 2025 and 2022 on upstream's x64-windows-intel and
x64-windows-amd runners. The plan moves three other tests to balance
the shards, which take 128.4 and 128.3 s instead of 119.8 and 123.9 s,
so ci.md now gives the latter as the first plan's.

The KVM and MSHV filters select every test whose name contains openvmm
and left out Windows guests only by windows_datacenter_core_2022_x64,
so the renamed test would have joined them. Leave out every Windows
Server Datacenter Core test instead, and test that through the
substring form of nextest's test(), which the filters use.

The protocol vectors and built-in CPU profiles that nvx-rs copies are
unchanged.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
… roadmap

Record the two commits that the previous commit pins as positions 370
and 371 of the microVM chain, and move the NVX pin to 549a21512.

Position 370 makes the change of microsoft/openvmm#4803 unchanged: the
KVP IC test boots Windows Server 2025 instead of 2022, whose COM
activation race can fail the guest's answer to the test's IP
information request. Position 371 stages the Server 2025 image for the
check-in gates' x64 Linux KVM job. It excludes the test and its image
from the MSHV job, where Server 2025's required initial reset fails. A
rebase onto an upstream main that includes microsoft/openvmm#4803 drops
position 370 and reconciles position 371 with upstream's changes for
those jobs; say so in the table's remarks. The pin is now 214 commits
past the mapped tip.

Keep the re-checked chain in the scope: microsoft/openvmm#4807 merged
positions 360 and 361, microsoft/openvmm#4804 merged positions 362-365,
microsoft/openvmm#4818 merged positions 366 and 367, and
microsoft/openvmm#4820 merged positions 368 and 369. Position 369,
5e0ab772e, is therefore the head of feature/microvm/dev, and
microsoft/openvmm#4816 proposes positions 370 and 371.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

Move the KVP integration test to Windows Server 2025, which includes a
fix for a Windows COM activation race. On Server 2022, this race can
lose WMI's server-registration notification, causing GET_IP_INFO to
fail after 120 seconds with 0x80080005.

Port #4803 to feature/microvm/dev unchanged, for
microsoft/nvx#1035, where the race failed NVX's WHP run of the test.

(cherry picked from commit a738912)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Since the previous commit, a port of #4803, the KVP IC
test boots Windows Server 2025 instead of 2022. The x64-linux-amd-kvm
and x64-linux-intel-mshv jobs selected it, but downloaded only the 2022
image, so both failed to resolve its artifacts in #4803.

Download the 2025 image for the KVM job, where the moved test passes. On
MSHV, Server 2025's required initial reset consistently fails while the
partition restores reset state: HvCallSetVpRegisters returns Invalid
parameter. Exclude that test and its image there; KVM and the Windows-host
jobs retain coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@ppenna
Pedro Henrique Penna (ppenna) force-pushed the copilot/vmm-tests-kvp-ic-server-2025 branch from 549a215 to 3d7512a Compare October 30, 2026 21:47
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
Pin microsoft/openvmm#4816 at 3d7512af653717aa9123595e993a56cb8587106a,
two commits on b58040ee4, the previous pin and the head of
feature/microvm/dev since microsoft/openvmm#4823 merged.

OpenVMM's KVP IC test booted Windows Server 2022, whose COM activation
race can lose WMI's server-registration notification, so that the
guest answers the test's IP information request with 0x80080005 after
120 s. The race failed the test in the WHP run of dev at c938ab2. The
first commit ports microsoft/openvmm#4803 unchanged and moves the test
to Windows Server 2025, which has the fix. The second stages the Server
2025 image for the check-in gates' x64 Linux KVM job. It excludes the
test from the MSHV job, where Server 2025's required initial reset
consistently fails with HvCallSetVpRegisters returning Invalid parameter.

The test's name holds its image, so it is now
multiarch::ic::openvmm_uefi_x64_windows_datacenter_core_2025_x64_kvp_ic.
Rename it in OPENVMM_WHP_TESTS, and plan the WHP shards again with an
estimate of 57.4 s for it until CI's reports measure it: NVX's median
of 34.0 s on Server 2022 times 1.69, the mean ratio of the test's
durations on Server 2025 and 2022 on upstream's x64-windows-intel and
x64-windows-amd runners. The plan moves three other tests to balance
the shards, which take 128.4 and 128.3 s instead of 119.8 and 123.9 s,
so ci.md now gives the latter as the first plan's.

The KVM and MSHV filters select every test whose name contains openvmm
and left out Windows guests only by windows_datacenter_core_2022_x64,
so the renamed test would have joined them. Leave out every Windows
Server Datacenter Core test instead, and test that through the
substring form of nextest's test(), which the filters use.

The protocol vectors and built-in CPU profiles that nvx-rs copies are
unchanged.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 30, 2026
… roadmap

Record the two commits that the previous commit pins as positions 371
and 372 of the microVM chain, and move the NVX pin to 3d7512af6.

Position 371 makes the change of microsoft/openvmm#4803 unchanged: the
KVP IC test boots Windows Server 2025 instead of 2022, whose COM
activation race can fail the guest's answer to the test's IP
information request. Position 372 stages the Server 2025 image for the
check-in gates' x64 Linux KVM job. It excludes the test and its image
from the MSHV job, where Server 2025's required initial reset fails. A
rebase onto an upstream main that includes microsoft/openvmm#4803 drops
position 371 and reconciles position 372 with upstream's changes for
those jobs; say so in the table's remarks. The pin is now 215 commits
past the mapped tip.

Keep the re-checked chain in the scope: microsoft/openvmm#4823 merged
position 370, so position 370, b58040ee4, is now the head of
feature/microvm/dev, and microsoft/openvmm#4816 proposes positions 371
and 372.

Refs #1035

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@ppenna
Pedro Henrique Penna (ppenna) merged commit 3d7512a into feature/microvm/dev Oct 30, 2026
74 checks passed
@github-actions

Copy link
Copy Markdown

Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 31, 2026
Record the six commits that the first commit of this series pins, which
microsoft/openvmm#4830 proposes, as positions 373-378 of the microVM
chain, and move the NVX pin to 858b2f93a.

Positions 373-378 move NVX's time ABI to version 2: the shared host TSC
bracket, the host OS's discipline of host UTC, the publication of host
UTC paired with the guest TSC and its correction, the guest TSC's
offset on every backend, the version-2 time sample and restore packet 5,
and the Guide's description. They change the time-ABI backends, portb
device, restore packet, and VM worker that positions 159-269 added, so
they follow those positions upstream: replayed on upstream main, they
conflict where those files are missing. Position 377 also adapts petri's
microVM configuration from PR15 and the ttrpc microVM test from PR25.
Position 378 names restore packet 5 in the CLI reference, in another
part of it than the host-loopback rule that position 370 adds.

The six commits are directly on 3d7512af6, position 372 and the current
head of feature/microvm/dev since microsoft/openvmm#4816 merged
positions 371 and 372, on position 370, which microsoft/openvmm#4823
merged. Update the scope, physical DAG, after-tip count and table, and
remarks. The pin is 221 commits past the mapped tip.

Part of #1009

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 31, 2026
Record the six commits that the first commit of this series pins, which
microsoft/openvmm#4830 proposes, as positions 373-378 of the microVM
chain, and move the NVX pin to 858b2f93a.

Positions 373-378 move NVX's time ABI to version 2: the shared host TSC
bracket, the host OS's discipline of host UTC, the publication of host
UTC paired with the guest TSC and its correction, the guest TSC's
offset on every backend, the version-2 time sample and restore packet 5,
and the Guide's description. They change the time-ABI backends, portb
device, restore packet, and VM worker that positions 159-269 added, so
they follow those positions upstream: replayed on upstream main, they
conflict where those files are missing. Position 377 also adapts petri's
microVM configuration from PR15 and the ttrpc microVM test from PR25.
Position 378 names restore packet 5 in the CLI reference, in another
part of it than the host-loopback rule that position 370 adds.

The six commits are directly on 3d7512af6, position 372 and the current
head of feature/microvm/dev since microsoft/openvmm#4816 merged
positions 371 and 372, on position 370, which microsoft/openvmm#4823
merged. Update the scope, physical DAG, after-tip count and table, and
remarks. The pin is 221 commits past the mapped tip.

Part of #1009

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna) added a commit to microsoft/nvx that referenced this pull request Oct 31, 2026
Record the six commits that the first commit of this series pins, which
microsoft/openvmm#4830 proposes, as positions 373-378 of the microVM
chain, and move the NVX pin to 858b2f93a.

Positions 373-378 move NVX's time ABI to version 2: the shared host TSC
bracket, the host OS's discipline of host UTC, the publication of host
UTC paired with the guest TSC and its correction, the guest TSC's
offset on every backend, the version-2 time sample and restore packet 5,
and the Guide's description. They change the time-ABI backends, portb
device, restore packet, and VM worker that positions 159-269 added, so
they follow those positions upstream: replayed on upstream main, they
conflict where those files are missing. Position 377 also adapts petri's
microVM configuration from PR15 and the ttrpc microVM test from PR25.
Position 378 names restore packet 5 in the CLI reference, in another
part of it than the host-loopback rule that position 370 adds.

The six commits are directly on 3d7512af6, position 372 and the current
head of feature/microvm/dev since microsoft/openvmm#4816 merged
positions 371 and 372, on position 370, which microsoft/openvmm#4823
merged. Update the scope, physical DAG, after-tip count and table, and
remarks. The pin is 221 commits past the mapped tip.

Part of #1009

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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