Back to feed
Dev.to
Dev.to
7/22/2026
Porting my Rust KVM hypervisor to ARM64: Running the binary

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?

Comments

Failed to load comments. Please try again.

Explore more