KVM: arm64: Fix host's ZCR_EL2 restore on nVHE
authorMarc Zyngier <maz@kernel.org>
Thu, 18 Mar 2021 18:30:26 +0000 (18:30 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 18 Mar 2021 18:30:26 +0000 (18:30 +0000)
commit5b08709313718e95ba06ef49aa82f964a605bd9c
treea7dbbc4fb4ab776301458b3054f5bc1496d3318f
parent6e94095c5566c946a487fa1f7212b60699fb52c5
KVM: arm64: Fix host's ZCR_EL2 restore on nVHE

We re-enter the EL1 host with CPTR_EL2.TZ set in order to
be able to lazily restore ZCR_EL2 when required.

However, the same CPTR_EL2 configuration also leads to trapping
when ZCR_EL2 is accessed from EL2. Duh!

Clear CPTR_EL2.TZ *before* writing to ZCR_EL2.

Fixes: beed09067b42 ("KVM: arm64: Trap host SVE accesses when the FPSIMD state is dirty")
Reported-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/hyp/nvhe/hyp-main.c