mirror of
https://github.com/kata-containers/kata-containers.git
synced 2026-07-12 10:16:48 +00:00
The host KVM capability checks obtained the KVM_CREATE_VM and KVM_CHECK_EXTENSION ioctl request numbers from <linux/kvm.h> via cgo (kata-check.go for the generic check, hypervisor_linux_arm64.go for the Arm RME check). This was the only remaining use of cgo in the runtime, and it forced the runtime to be linked against the host libc. Replacing these with plain Go constants lets kata-runtime, containerd-shim-kata-v2 and kata-monitor build with CGO_ENABLED=0, which is a prerequisite for producing fully static, libc-agnostic binaries that run on musl-only hosts (the kata-deploy payload otherwise fails to exec on a glibc-free distribution because its requested dynamic loader is absent). The ioctl numbers are stable kernel ABI. The asm-generic encoding used by amd64, arm64, s390x and riscv64 gives _IO(KVMIO, nr) == (0xAE << 8) | nr, while powerpc uses the legacy encoding (_IOC_NONE == 1, direction shifted by 29). The values are split into kvm_ioctls_generic.go and kvm_ioctls_ppc64le.go accordingly so each architecture keeps the exact value its kernel headers would have produced. No functional change: the runtime issues the same ioctls as before. Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com> Generated-By: Claude Opus 4.8 (1M context) noreply@anthropic.com