Mathieu Bacou
mathieu.bacou@telecom-sudparis.eu
Télécom SudParis, IMT, IP Paris, Inria
2026–2027 CSC5004 — Cloud Computing Infrastructures
virtio driverskvmfd = open("/dev/kvm");
vmfd = ioctl(kvmfd, KVM_CREATE_VM);
struct kvm_userspace_memory_region region = {
.guest_phys_addr = 0x1000, .memory_size = 0x4000,
.userspace_addr = &guest_memory };
ioctl(vmfd, KVM_SET_USER_MEMORY_REGION, ®ion);
vcpufd = ioctl(vmfd, KVM_CREATE_VCPU);
// [...] Other architecture-specific vCPU initialization.
while (1) {
switch (ioctl(vcpufd, KVM_RUN)) {
case KVM_EXIT_HLT: // [...] VM halted
case KVM_EXIT_IO: // [...] VM issued I/O operation
case KVM_EXIT_SHUTDOWN: // [...] Virtual hardware fault
// [...] Other error cases
} }ioctls use special CPU instructions (examples are
from Intel’s set)