KVM: arm64: Invalidate EL1&0 TLB entries for all VMIDs in nvhe hyp init
authorWill Deacon <will@kernel.org>
Wed, 14 Aug 2024 12:34:28 +0000 (13:34 +0100)
committerMarc Zyngier <maz@kernel.org>
Thu, 15 Aug 2024 13:05:02 +0000 (14:05 +0100)
When initialising the nVHE hypervisor, we invalidate potentially stale
TLB entries for the EL1&0 regime using a 'vmalls12e1' invalidation.
However, this invalidation operation applies only to the active VMID
and therefore we could proceed with stale TLB entries for other VMIDs.

Replace the operation with an 'alle1' which applies to all entries for
the EL1&0 regime, regardless of the VMID.

Cc: Marc Zyngier <maz@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>
Fixes: 1025c8c0c6ac ("KVM: arm64: Wrap the host with a stage 2")
Signed-off-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20240814123429.20457-2-will@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/hyp/nvhe/hyp-init.S

index 07120b37da35098f1b49a3431b92ceddae0274fd..401af1835be6b7ae6f099ad7059d278aa3996cf4 100644 (file)
@@ -130,7 +130,7 @@ alternative_else_nop_endif
 
        /* Invalidate the stale TLBs from Bootloader */
        tlbi    alle2
-       tlbi    vmalls12e1
+       tlbi    alle1
        dsb     sy
 
        mov_q   x0, INIT_SCTLR_EL2_MMU_ON