[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