The kvm-ioctls crate provides safe wrappers over the KVM API, a set of ioctls used for creating and configuring Virtual Machines (VMs) on Linux. The ioctls are accessible through four structures:
Kvm
- wrappers over system ioctlsVmFd
- wrappers over VM ioctlsVcpuFd
- wrappers over vCPU ioctlsDeviceFd
- wrappers over device ioctls
For further details check the KVM API as well as the code documentation.
The kvm-ioctls can be used on x86_64 and aarch64. Right now the aarch64 support is considered experimental. For a production ready version, please check the progress in the corresponding GitHub issue.
Our Continuous Integration (CI) pipeline is implemented on top of Buildkite. For the complete list of tests, check our CI pipeline.
Each individual test runs in a container. To reproduce a test locally, you can use the dev-container on both x86 and arm64.
docker run --device=/dev/kvm \
-it \
--security-opt seccomp=unconfined \
--volume $(pwd)/kvm-ioctls:/kvm-ioctls \
rustvmm/dev:v2
cd kvm-ioctls/
cargo test
For more details about the integration tests that are run for kvm-ioctls
,
check the rust-vmm-ci readme.