Repository navigation
Conversation
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>
4 of 5 tasks
ananos
marked this pull request as ready for review
October 23, 2026 17:17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
flockwaiting 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, aflock -xon a held file under/of an alpine instance hangshull exec, and a secondhull exec <id> -- echohangs 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:Moving urunc to
--fsis 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--fsexport syntax, and the move of the run and I/O threads underhvi::run.Checklist
make testpassesmake macosbuilds hull, vz-runner and hvi, if Go, Swift or Rust code changedI have added or updated tests covering the changetest/*.py) for changes touching boot, console, or the run pathI 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.pyboots ubuntu on hvi. 4, 16 and 64 MiB ofhull execstdout and 4 MiB of stdin arrive intact on both pins.