KVM: arm64: Save/restore SVE state for nVHE
authorMarc Zyngier <maz@kernel.org>
Thu, 11 Mar 2021 18:29:55 +0000 (18:29 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 18 Mar 2021 14:23:12 +0000 (14:23 +0000)
commit8c8010d69c1322734a272eb95dbbf42b5190e565
treeb67366c7598da31074f57b7de4e569fff294dde7
parentbeed09067b428a7e84a53b05c1de1f93c8460e91
KVM: arm64: Save/restore SVE state for nVHE

Implement the SVE save/restore for nVHE, following a similar
logic to that of the VHE implementation:

- the SVE state is switched on trap from EL1 to EL2

- no further changes to ZCR_EL2 occur as long as the guest isn't
  preempted or exit to userspace

- ZCR_EL2 is reset to its default value on the first SVE access from
  the host EL1, and ZCR_EL1 restored to the default guest value in
  vcpu_put()

Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/fpsimd.c
arch/arm64/kvm/hyp/include/hyp/switch.h
arch/arm64/kvm/hyp/nvhe/switch.c