bug: fix kvm device not being properly forwarded
diff-tag / dix (push) Successful in 6m7s
flake-check / flake-check (push) Successful in 52s
lint / lint (push) Successful in 1m48s

Co-authored-by: Autumn Liu <al63244@my.utexas.edu>
Reviewed-on: #9
Co-authored-by: autumn <aut.tea7@gmail.com>
This commit was merged in pull request #9.
This commit is contained in:
2026-09-14 01:47:43 +00:00
committed by flowey
co-authored by Autumn Liu
parent 060863f72f
commit b083c03d5e
2 changed files with 33 additions and 8 deletions
+19
View File
@@ -333,9 +333,28 @@ with subtest("(functional): published ports follow the container's lifetime"):
with subtest("(functional): declared devices are usable in-container"):
for name, devices in DEVICES.items():
for dev in devices:
# opened, not stat'd: without DeviceAllow= the node is still visible
server.succeed(ct_cmd(name, f"exec 3<> {dev}"))
with subtest("(functional): /dev/kvm actually initializes, not just opens"):
# a wrong-gid or unmapped node still opens but fails the ioctls qemu
# needs, so boot with no disk (never completes) and kill it - the
# failure mode this catches is qemu refusing to start at all.
for name, devices in DEVICES.items():
if "/dev/kvm" not in devices:
continue
out = server.succeed(
ct_cmd(
name,
f"{TIMEOUT} 3 qemu-system-x86_64 -enable-kvm -m 256 -nographic -no-reboot "
">/tmp/qemu.out 2>&1; cat /tmp/qemu.out",
)
)
assert "Permission denied" not in out, f"{name}: qemu couldn't use /dev/kvm:\n{out}"
assert "Could not access KVM" not in out, f"{name}: qemu couldn't use /dev/kvm:\n{out}"
with subtest("(isolation): devices reach only the container that declared them"):
for name in enterable:
for dev in {d for ds in DEVICES.values() for d in ds} - set(DEVICES.get(name, [])):