2026-10-08 — QEMU 108 deadloop: virtiofs + OVMF under PVE 9
Post-upgrade boot failure: QEMU 108 wedged in OVMF with zero disk I/O after the PVE 8→9 upgrade. Resolved by deleting
virtiofs0— the service was then rebuilt as LXC 114 (bind-mount pattern) and the VM destroyed.
Symptom
After the upgrade reboot, VM 108 showed qmpstatus: running but was
dead at the firmware stage:
diskread: 0/diskwrite: 0— never touched the disknetin~40 B,netout: 0; ~47 MiB of the 16 GiB touchedqm terminalhung (serial0 socket, nothing emitted); noVNC console pure black; ~50% CPU on one vCPU (a firmware deadloop signature)qm guest-agent pingtimeouts — the guest OS never loaded
Diagnosis path
Via diag-pipe read-only jobs on the host:
qm monitor→info registers: vCPU frozen at a single RIP (0xbeb6e058, just below 3 GB — OVMF DXE-phase address space), identical across samples — a parked/deadlooping CPU, not a spin.info status/info vcpus: QEMU healthy,running, KVM fine.- virtiofsd alive: both daemon processes running, vhost-user
sockets present,
/etc/pve/mapping/directory.cfgintact — the host-side backend was not the problem. - devvm (112) unaffected on the same machine type
(
pc-i440fx-11.0+pve0) — but devvm is SeaBIOS while 108 is OVMF (bios: ovmf+ efidisk). That asymmetry was the tell: OVMF ships a VirtioFs DXE driver that probes the vhost-user-fs device during firmware init; SeaBIOS has no such driver and never touches it.
Ruled out (each tested by config change + reboot)
vga: qxl→std: still dead.machine: pc-i440fx-9.2(pin to creation-era type): still dead.machine: q35: still dead.- virtiofsd process health: alive throughout.
Root cause
OVMF’s VirtioFs DXE driver deadloops probing the virtiofs0
vhost-user device under QEMU 11.0.3 (PVE 9). The guest had no pinned
machine: version, so it silently floated to the newest machine type
on upgrade — but the wedge is the firmware/driver path, not the
machine type (q35 failed too).
Fix: qm set 108 --delete virtiofs0 → booted immediately.
Re-adding the device re-wedges it; there is no config-level fix, so
virtiofs + OVMF is effectively unsupported on this host under PVE 9.
Resolution
Rebuilt the service as unprivileged LXC 114 — same LAN IP
(10.0.1.28, caddy/DNS untouched), mp0 bind mount for the share
(no virtiofs), /dev/net/tun passthrough + nesting=1 for
mullvad-daemon (vpngw precedent), Debian 13. Fresh mullvad CLI
setup — forced anti-censorship udp2tcp (the old VM was on auto,
burning a doomed raw-WG attempt on every connect). New
mullvad-watchdog installed. VM 108 destroyed after the CT proved out.
Lessons
- virtiofs + OVMF = boot deadloop on PVE 9. If any QEMU guest ever
moves to OVMF, remove virtiofs devices first. devvm stays on
SeaBIOS — don’t switch it without dropping
virtiofs0. - For QEMU guests that need the share under OVMF: alternatives are a guest-side CIFS mount or NFS re-export — not virtiofs.
- Diagnosis shortcut: zero
diskread/diskwrite+ frozeninfo registersRIP in the ~3 GB region = firmware-stage wedge; bisect hardware config (vga,machine, virtiofs), not guest state.