Skip to content

OpenVMM/microVM umbrella: OpenVMM issues outside the microVM and NVX implementation #1186

Open
0 of 21 issues completed

Description

Objective. Keep apart the OpenVMM issues that concern neither the microVM nor NVX's implementation. No NVX microVM reaches the code that they change, so fixing them changes nothing that an NVX microVM does. Most of them are in code that the microVM shares with OpenVMM's standard VMs, so they can also be fixed or reported upstream.

Standard-VM features that microVMs lack. The microVM boots its kernel directly, without PCAT or UEFI firmware, and has no PCI, PCIe, vPCI, or VMBus, no PM device, and no Hyper-V enlightenments or isolation (openvmm/openvmm_defs/src/microvm.rs).

Issue Scope Why no NVX microVM reaches it
#135 The last OpenVMM VMM tests that NVX CI excludes. Its sub-issues are #183 (PCAT firmware for the Linux KVM and MSHV PCAT tests) and #184 (the MSHV PCIe save/restore pulse hang). They test PCAT boots and PCIe save/restore.
#170 Linux/KVM UEFI boot tests stall on lazily fetched VHD reads. The microVM uses neither UEFI nor lazily fetched disks.
#393 OpenVMM aborts while stopping the VM in MSHV ttrpc::test_ttrpc_interface. The test's VM is a standard VM, with SCSI over VMBus, vPCI, and PCIe NVMe and virtio-blk. The root cause is not yet known; if it lies in MSHV partition teardown, which microVMs share, move the issue back.
#1156 VPCI hot removal closes the chipset bus while VPs can still access it. microVMs have no VMBus or VPCI.
#1377 A KVM partition with Hyper-V enlightenments and more than 2024 VPs panics while it claims their SynIC routes. microVMs have no Hyper-V enlightenments.
#1383 Saving or inspecting a KVM AP in SEV-ES/SNP reset hold panics. microVMs run without isolation.
#1384 offset_of overflows for a port-I/O or MMIO region that ends at the address maximum. No microVM device calls it, as the issue notes; in the chipset crate, only the PIIX4 PM device does.

Shared code that no microVM or NVX path reaches.

Issue Scope Why no NVX microVM reaches it
#1155 Accepted state-unit dependency cycles hang lifecycle operations past their timeout. Normal microVM construction creates no such cycle, as the issue notes.
#1165 A removed dependency leaves a partial registration that can misroute restored state. In-tree construction does not race dependency removal, as the issue notes.
#1166 Cancelling a VM-time stop leaves the owner running after its keepers stop. The microVM's unit dispatcher never drops a stop; only other API callers can, as the issue notes.
#1069 The vmtime time-source task spins forever on a timeout half the ring past the start time. It needs a timeout about 29,000 years ahead. The microVM's devices set none, and the issue's only guest lead is OpenHCL's synthetic timer.
#1142 Registering a time source while VM time runs from a nonzero start panics. OpenVMM builds its only VM-time source during VM construction, while VM time is stopped (openvmm/openvmm_core/src/worker/dispatch.rs).
#1159 KVM CPU reset keeps a pending NMI and the interrupt shadow. A microVM guest cannot request a reset: it has no i8042, ACPI PM, PCI reset, or UEFI, its shutdown port only powers off, a triple fault halts by default, and the time ABI's MSR filter makes Hyper-V's reset MSR raise #GP. NVX's launches run the REPL headless, and a restore starts on fresh vCPUs.
#1167 A ReadMemory RPC with an excessive size crashes the VM worker. Only the interactive REPL sends ReadMemory, and NVX's launches run it headless (--microvm-control-auth-stdin).
#1374 A gdb Break on a paused VM records a debug-break halt, which a later save keeps. NVX's launches never pass --gdb, so no debugger attaches.
#1386 On KVM, a halted VP with a PV kick waiting restores as running. Every microVM has a time ABI, under which KVM refuses the kick, as the issue notes, and a restore starts on fresh vCPUs.
#1388 On an AMD KVM host, binding a VP of a guest whose CPUID names GenuineIntel fails on IA32_FEATURE_CONTROL. With a time ABI, which every microVM has, the generation check refuses an Intel profile on an AMD host before the partition is built, as the issue notes.
#1387 A chipset device whose add fails stays a target of its line sets. The microVM's load returns the add's error, as the issue notes.
#1378 Host CPUID with 0 or more than 32768 VPs per socket panics the topology. The microVM starts from TopologyBuilder::new_x86(), not from the host's topology, as the issue notes.
#1379 Intel topology CPUID panics above 4096 reserved VPs per socket. The microVM has at most 8 VPs, in one socket, as the issue notes.
#1240 consomme's test_tcp_last_ack_restarts_timeout_after_close_wait races a 1 ms close deadline, so a runner stall hangs OpenVMM's Windows unit tests. The defect is in the test, not in consomme. Upstream fixed it in microsoft/openvmm#4852 (ddbb365ff), which NVX's pin, 0e46a01e, includes.

Order. No child blocks another, and no issue elsewhere in #1185 is blocked by one of them.

Notes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions