[PATCH 0/7] KVM: arm64: trap fixes and cleanup
Mark Rutland
mark.rutland at arm.com
Tue Jun 17 06:37:11 PDT 2025
This series fixes some issues with the way KVM manages traps in VHE
mode, with some cleanups/simplifications atop.
Patch 1 fixes a theoretical issue with debug register manipulation,
which has been around forever. This was found by inspection while
working on other fixes.
Patch 2 fixes an issue with NV where a host may take unexpected traps as
a result of a guest hypervisor's configuration of CPTR_EL2.
Patch 5 fixes an issue with NV where a guest hypervisor's configuration
of CPTR_EL2 may not be taken into account when running a guest guest,
incorrectly permitting usage of SVE when this should be trapped to the
guest hypervisor.
The other patches in the series are prepartory work and cleanup.
Originally I intended to simplify/cleanup to kvm_hyp_handle_fpsimd() and
kvm_hyp_save_fpsimd_host(), as discussed with Will on an earlier series:
https://lore.kernel.org/linux-arm-kernel/20250210161242.GC7568@willie-the-truck/
https://lore.kernel.org/linux-arm-kernel/Z6owjEPNaJ55e9LM@J2N7QTR9R3/
https://lore.kernel.org/linux-arm-kernel/20250210180637.GA7926@willie-the-truck/
https://lore.kernel.org/linux-arm-kernel/Z6pbeIsIMWexiDta@J2N7QTR9R3/
In the process of implementing that, I realised that the CPTR trap
management wasn't quite right for NV, and found the potential issue with
debug register configuration.
I've given the series some light testing on a fast model so far; any
further testing and/or review would be much appreciated.
The series is based on the 'kvmarm-fixes-6.16-2' tag from the kvmarm
tree.
Mark.
Mark Rutland (7):
KVM: arm64: VHE: Synchronize restore of host debug registers
KVM: arm64: VHE: Synchronize CPTR trap deactivation
KVM: arm64: Reorganise CPTR trap manipulation
KVM: arm64: Remove ad-hoc CPTR manipulation from fpsimd_sve_sync()
KVM: arm64: Remove ad-hoc CPTR manipulation from
kvm_hyp_handle_fpsimd()
KVM: arm64: Remove cpacr_clear_set()
KVM: arm64: VHE: Centralize ISBs when returning to host
arch/arm64/include/asm/kvm_emulate.h | 62 ----------
arch/arm64/include/asm/kvm_host.h | 6 +-
arch/arm64/kvm/hyp/include/hyp/switch.h | 147 ++++++++++++++++++++++--
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 5 +-
arch/arm64/kvm/hyp/nvhe/switch.c | 59 ----------
arch/arm64/kvm/hyp/vhe/switch.c | 107 +++--------------
6 files changed, 158 insertions(+), 228 deletions(-)
--
2.30.2
More information about the linux-arm-kernel
mailing list