[PATCH v5 0/4] KVM: arm64: Fix underallocation of storage for SVE state

From: Mark Brown
Date: Mon Jul 08 2024 - 10:21:16 EST


As observed during review the pKVM support for saving host SVE state is
broken if an asymmetric system has VLs larger than the maximum shared
VL, fix this by discovering then using the maximum VL for allocations
and using RDVL during the save/restore process.

Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
---
Changes in v5:
- Clarify commit message on patch 3.
- Link to v4: https://lore.kernel.org/r/20240704-kvm-arm64-fix-pkvm-sve-vl-v4-0-b6898ab23dc4@xxxxxxxxxx

Changes in v4:
- Roll in Catalin's acks.
- Link to v3: https://lore.kernel.org/r/20240607-kvm-arm64-fix-pkvm-sve-vl-v3-0-59e781706d65@xxxxxxxxxx

Changes in v3:
- Replace %u with %lu in late CPU error message.
Changes in v2:
- Downgrade check for a late CPU increasing maximum VL to a warning only
but do it unconditionally since pKVM prevents late CPUs anyway.
- Commit log tweaks.
- Link to v1: https://lore.kernel.org/r/20240605-kvm-arm64-fix-pkvm-sve-vl-v1-0-680d6b43b4c1@xxxxxxxxxx

---
Mark Brown (4):
arm64/fpsimd: Introduce __bit_to_vl() helper
arm64/fpsimd: Discover maximum vector length implemented by any CPU
KVM: arm64: Fix FFR offset calculation for pKVM host state save and restore
KVM: arm64: Avoid underallocating storage for host SVE state

arch/arm64/include/asm/fpsimd.h | 17 +++++++++++++++
arch/arm64/include/asm/kvm_host.h | 2 +-
arch/arm64/include/asm/kvm_hyp.h | 3 ++-
arch/arm64/include/asm/kvm_pkvm.h | 2 +-
arch/arm64/kernel/fpsimd.c | 38 +++++++++++++++++++++++++++------
arch/arm64/kvm/hyp/fpsimd.S | 5 +++++
arch/arm64/kvm/hyp/include/hyp/switch.h | 2 +-
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 6 +++---
arch/arm64/kvm/hyp/nvhe/pkvm.c | 2 +-
arch/arm64/kvm/reset.c | 6 +++---
10 files changed, 65 insertions(+), 18 deletions(-)
---
base-commit: afb91f5f8ad7af172d993a34fde1947892408f53
change-id: 20240604-kvm-arm64-fix-pkvm-sve-vl-13cd71fd7db0

Best regards,
--
Mark Brown <broonie@xxxxxxxxxx>