Skip to content

chore(deps): Bump hvi-vmm for the flock hang - #130

Open
ananos wants to merge 1 commit into
mainfrom
chore/bump-hvi-vmm-7766307
Open

ananos wants to merge 1 commit into
mainfrom
chore/bump-hvi-vmm-7766307

Conversation

@ananos

@ananos ananos commented Oct 23, 2026

Copy link
Copy Markdown
Member

Summary

hull still pins hvi-vmm at c53a857, 59 commits behind main. We should move it to main to get the fixes landed since.

The one that matters most is in virtio-fs. A guest flock waiting on a held lock blocked the whole request queue, so the holder could never unlock it and the rootfs stopped answering. On the old pin, a flock -x on a held file under / of an alpine instance hangs hull exec, and a second hull exec <id> -- echo hangs with it (2 of 2). On 7766307 the waiter takes the lock about 2.5 s later, once the holder lets go (2 of 2).

The urunc that hull pins still passes --share-rw. It keeps working, but every hvi boot now prints a note:

[hvi] note: --share-rw <dir> <tag> is now --fs tag=<tag>,path=<dir>; the old form still works

Moving urunc to --fs is a separate change.

Changes

  • hvi-vmm: c53a857 -> 7766307 (brig-sh/hvi-vmm main). The commit body lists the range: the virtio-fs lock fix, PL031 RTC and FDT fixes on arm64, ACPI power-off and CPUID bits on x86, virtio-blk GET_ID / read-only / image lock / up to four disks, the --fs export syntax, and the move of the run and I/O threads under hvi::run.

Checklist

  • make test passes
  • make macos builds hull, vz-runner and hvi, if Go, Swift or Rust code changed
  • I have added or updated tests covering the change
  • I have run the e2e harnesses (test/*.py) for changes touching boot, console, or the run path
  • I have updated the affected docs (README, docs/)

Evidence, on an arm64 Mac: golangci-lint v2.12.2 is clean for darwin and linux, as is GOOS=linux go vet ./.... test/hvi-boot-test.py boots ubuntu on hvi. 4, 16 and 64 MiB of hull exec stdout and 4 MiB of stdin arrive intact on both pins.

hvi-vmm moves from c53a857 to 7766307, brig-sh/hvi-vmm main, 59
commits along. The tip carries the virtio-fs lock fixes. A guest SETLKW
on a held lock blocked the request queue. The holder could then never
send its unlock, and the whole rootfs stopped answering. hvi now parks
the waiter and keeps serving the queue.

On the old pin, a `flock -x` on a held file under / of an alpine
instance hangs `hull exec` (2 of 2), and a second `hull exec <id> --
echo` hangs with it. On 7766307 the waiter takes the lock once the
holder lets go (2 of 2).

The rest of the range:
- arm64: a PL031 RTC gives the guest the host's wall-clock time from
  boot; the FDT names each vCPU by its KVM affinity and marks the
  timer always-on; pointer authentication when KVM offers it.
- x86: power-off through ACPI, a notify after a vCPU pause, the
  hypervisor and TSC-deadline CPUID bits, and a 254 vCPU limit.
- virtio-blk: GET_ID, read-only disks, an image lock, UNSUPP for
  unknown requests, and up to four disks.
- virtio-fs: an export is one `--fs tag=,path=` with its owner; Linux
  exports go through a vhost-user daemon.
- The run, its stop and the I/O threads move under hvi::run. A thread
  panic ends the process, guest RAM stays out of core files, and the
  events ledger refuses a symbolic link.

The urunc that hull pins still passes `--share-rw`. It keeps working,
but every hvi boot now prints one note on `hull run`'s output:

  [hvi] note: --share-rw <dir> <tag> is now --fs tag=<tag>,path=<dir>;
  the old form still works

Moving urunc to `--fs` is a separate change.

Verified on this arm64 Mac. `make macos` builds against the new pin,
`make test` passes, and golangci-lint v2.12.2 is clean for darwin and
linux, as is `GOOS=linux go vet ./...`. test/hvi-boot-test.py boots an
unmodified ubuntu image on hvi. 4, 16 and 64 MiB of `hull exec` stdout
and 4 MiB of stdin arrive intact, on both pins.

Signed-off-by: Anastassios Nanos <ananos@nofire.ai>
@ananos
ananos marked this pull request as ready for review October 23, 2026 17:17
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.

1 participant