KVM: arm64: Fix SMPRI_EL1/TPIDR2_EL0 trapping on VHE
authorMarc Zyngier <maz@kernel.org>
Tue, 1 Nov 2022 12:19:51 +0000 (12:19 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 1 Nov 2022 15:56:52 +0000 (15:56 +0000)
commit4151bb636acf32bb2e6126cec8216b023117c0e9
tree897e0137aa9685611db89e4c943c866c1d7992c1
parent7a2726ec3290c52f52ce8d5f5af73ab8c7681bc1
KVM: arm64: Fix SMPRI_EL1/TPIDR2_EL0 trapping on VHE

The trapping of SMPRI_EL1 and TPIDR2_EL0 currently only really
work on nVHE, as only this mode uses the fine-grained trapping
that controls these two registers.

Move the trapping enable/disable code into
__{de,}activate_traps_common(), allowing it to be called when it
actually matters on VHE, and remove the flipping of EL2 control
for TPIDR2_EL0, which only affects the host access of this
register.

Fixes: 861262ab8627 ("KVM: arm64: Handle SME host state when running guests")
Reported-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/86bkpqer4z.wl-maz@kernel.org
arch/arm64/kvm/hyp/include/hyp/switch.h
arch/arm64/kvm/hyp/nvhe/switch.c
arch/arm64/kvm/hyp/vhe/switch.c