[PATCH v19 00/20] KVM: arm64: CCA: Add basic plumbing for Realms

Suzuki K Poulose suzuki.poulose at arm.com
Thu Sep 24 03:49:23 PDT 2026


On 24/09/2026 11:40, Gavin Shan wrote:
> On 9/21/26 7:28 AM, Suzuki K Poulose wrote:
>> This series is a trimmed down version of the Arm CCA KVM support, 
>> previously
>> posted here [0]. Like in the v17, we have tried to split the entire 
>> series
>> into the following chunks.
>>
>>   1) Base RMM RMI support under drivers/firmware/arm_rmm -> [1]
>>   2) Linux Host support for handling GPFs - [2]
>>   3) NEW: Enlighten KVM arm64 about the different VM types and use call
>>      backs for the VM type, rather than spilling the is_this_type_of_vm()
>>      everywhere. Adds VCPU and Stage2 MMU related callbacks with support
>>      for the existing VM types. There are other places where we may be
>>      able to abstract, but those need careful performance evaluations
>>      to make sure they are fit (e.g., vcpu_run)
>>
>>     With that in place we generalise the predicate 
>> "kvm_vm_is_protected()"
>>     to cover all  "Confidential" VMs (which includes Protected VM and 
>> Realms),
>>     allowing us to handle common themes without having to do things 
>> like :
>>
>>       if (kvm_vm_is_protected() || kvm_vm_is_realm())
>>
>>     Also replaces the code with precise check for a given VM type to
>>     avoiding combination of if (). e.g,, kvm_vm_is_unprotected_pkvm(kvm).
>>     The checks under arch/arm64/kvm/{nvhe,pkvm} still retain the 
>> vm_is_protected()
>>     check as pVMs are the only possible protected VMs there.
>>   4) Bare minimal Realm VM support without the actual functionality to
>>      run a Realm. This would help the maintainers to review the series in
>>      smaller chunks. This doesn't depend on [1] and can be independently
>>      merged, without being "functional".
>>      This series includes vcpu operations and the s2 vm operations, which
>>      do need the RMI driver backend to be meaningful. But the KVM handler
>>      is in the right shape. The remaining changes would be added once the
>>      RMI firmware library lands. Also covers the SET_ONE_REG/GET_ONE_REG
>>
>>   5) Core implementation of the RMI driver for KVM and actual 
>> enablement of the
>>      Realm support. This depends on (1), (2) and the guest-memfd-in-place
>>      conversion series v12 from Ackerley. This is available here at 
>> the integration
>>      branch [3]
>>
>> This series is comprised of (3) and (4) above.
>>
>> The integration branch has been tested with the following components:
>>
>>    tf-RMM:   main branch (commit 5e6e2acd) compliant to RMM-v2.0-beta3 
>> [4]
>>    kvmtool: git at git.gitlab.arm.com:linux-arm/kvmtool-cca.git cca/kvm-v18
>>
>> [0] Arm CCA KVM Support v16 : https://lore.kernel.org/ 
>> all/20260803134403.80630-1-steven.price at arm.com
>> [1] Linux firmware RMI https://lore.kernel.org/ 
>> all/20260912083611.2513845-1-suzuki.poulose at arm.com
>> [2] Linux GPF Host https://lore.kernel.org/ 
>> all/20260913070459.2547407-1-suzuki.poulose at arm.com
>> [3] https://git.gitlab.arm.com/linux-arm/linux-cca/ cca/cca-host/kvm- 
>> v19/integration
>> [4] https://support.arm.com/documentation/den0137/2-0bet3/
>>
> 
> Apart from the issue found against PATCH[v19 05/20], I didn't see more 
> issues with this
> series in my tests where kselftest/kvm cases and kvm-unit-tests are done 
> on various
> combinations: 4KB host kernel, 64KB host kernel, kernel parameter "kvm- 
> arm.mode=
> {nvhe, protected}" or nil. So with the found issue caused by PATCH[v19 
> 05/20] fixed:
> 
> Tested-by: Gavin Shan <gshan at redhat.com>

Thank you Gavin, much appreciated !

Cheers
Suzuki




More information about the linux-arm-kernel mailing list