Dev.to
7/22/2026

Porting my Rust KVM hypervisor to ARM64: Running the binary
Short summary
The author debugs an ENOEXEC error when porting a Rust KVM hypervisor to ARM64, tracing it to a missing KVM_ARM_VCPU_INIT ioctl call before register access. Using GDB tracing and kernel source analysis, they identify the required vcpu_init struct and successfully initialize the ARM64 VCPU with target=5 and zeroed features.
- •ENOEXEC error on ARM64 KVM traced to missing KVM_ARM_VCPU_INIT call before KVM_GET_ONE_REG
- •GDB breakpoint tracing revealed QEMU uses target=5 with feature flag 12 for VCPU initialization
- •Adding the KVM_ARM_VCPU_INIT ioctl with target=5 resolved register access errors
Generated with AI, which can make mistakes.
Is this a good recommendation for you?



