freenode
Kernel & Low-Level

KVM arm64 gets basic plumbing for Arm CCA Realms

Arm posts the eighteenth revision of structural KVM changes for confidential Realm VMs, still short of a runnable guest.

Suzuki K Poulose of Arm has posted the eighteenth revision of patches that begin wiring Arm Confidential Compute Architecture (CCA) Realm support into KVM on arm64.

Realms are confidential virtual machines that run under the Realm Management Monitor and do not trust the host. They are Arm's answer to the same class of isolation offered by AMD SEV and Intel TDX. This revision does not yet let anyone create or run a Realm. It supplies the structural hooks so later, functional pieces can land without further scattering type checks through the hypervisor.

The work teaches KVM to dispatch VM-flavor behavior through callbacks for vCPU load/put and stage-2 MMU operations instead of ad-hoc predicates. Existing guests, including protected VMs under pKVM, keep working through the new paths. A broader confidential-VM check now covers both protected pKVM guests and Realms, so shared restrictions (timer offset configuration, certain abort handling, and blocking host-driven device mappings the hypervisor cannot trust) apply once.

Bare Realm stubs cover TLB maintenance (left to the RMM), memory abort routing, a new kvm-arm.mode=rmm boot option, and GICv3-only interrupt controller setup. Timer interrupts for Realms use software resampling because the RMM rejects hardware-backed list registers. Capability and ioctl filters narrow what userspace may enable on a Realm, and register-list queries are allowed on unfinalized Realm vCPUs so SVE vector length and related parameters can be sealed before the Realm descriptor exists.

Full enablement still waits on the RMM interface driver, host fault handling for the confidential path, and related guest memory work. Poulose presents the current chunks as independently reviewable scaffolding, with the remaining RMI integration to follow once those prerequisites land.