[PATCH v14 14/44] arm64: RMI: Basic infrastructure for creating a realm.
Aneesh Kumar K.V
aneesh.kumar at kernel.org
Mon May 18 23:31:55 PDT 2026
Steven Price <steven.price at arm.com> writes:
> @@ -1114,7 +1119,10 @@ void kvm_free_stage2_pgd(struct kvm_s2_mmu *mmu)
> write_unlock(&kvm->mmu_lock);
>
> if (pgt) {
> - kvm_stage2_destroy(pgt);
> + if (!kvm_is_realm(kvm))
> + kvm_stage2_destroy(pgt);
> + else
> + kvm_pgtable_stage2_destroy_pgd(pgt);
> kfree(pgt);
> }
> }
Maybe add a comment here explaining the difference.
We now have:
kvm_arch_destroy_vm()
-> kvm_uninit_stage2_mmu()
-> kvm_realm_uninit_stage2()
-> unmap_range(0, max_ipa) // for Realm VMs
-> kvm_free_stage2_pgd()
-> unmap and free PGD // for non-Realm VMs
-> kvm_destroy_realm() // for Realm VMs
-> kvm_free_stage2_pgd()
-> free PGD // for Realm VMs
I wonder whether this can be simplified using different functions names?
(can we call kvm_pgtable_stage2_destroy_pgd() from kvm_destroy_realm()? )
-aneesh
More information about the linux-arm-kernel
mailing list