Skip to content

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

Open
0 of 11 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 (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.

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).

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

Notes. If one of these turns out to reach a microVM, move it back to the matching area umbrella under #1185. #1156 shares #1138's pattern: a CloseableMutex stays closed across an asynchronous wait while vCPUs can still lock it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions