KVM: arm64: pkvm: Document the side effects of kvm_flush_dcache_to_poc()
authorMarc Zyngier <maz@kernel.org>
Sat, 8 Apr 2023 16:04:25 +0000 (17:04 +0100)
committerMarc Zyngier <maz@kernel.org>
Fri, 14 Apr 2023 07:23:29 +0000 (08:23 +0100)
We rely on the presence of a DSB at the end of kvm_flush_dcache_to_poc()
that, on top of ensuring completion of the cache clean, also covers
the speculative page table walk started from EL1.

Document this dependency.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/hyp/nvhe/mem_protect.c

index 552653f..2e9ec4a 100644 (file)
@@ -297,6 +297,13 @@ int __pkvm_prot_finalize(void)
        params->vttbr = kvm_get_vttbr(mmu);
        params->vtcr = host_mmu.arch.vtcr;
        params->hcr_el2 |= HCR_VM;
+
+       /*
+        * The CMO below not only cleans the updated params to the
+        * PoC, but also provides the DSB that ensures ongoing
+        * page-table walks that have started before we trapped to EL2
+        * have completed.
+        */
        kvm_flush_dcache_to_poc(params, sizeof(*params));
 
        write_sysreg(params->hcr_el2, hcr_el2);