From: Oliver Upton <oliver.upton@linux.dev>
To: kvmarm@lists.linux.dev
Cc: Marc Zyngier <maz@kernel.org>, James Morse <james.morse@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>,
kvm@vger.kernel.org, Fuad Tabba <tabba@google.com>,
Oliver Upton <oliver.upton@linux.dev>
Subject: [PATCH v2 00/15] KVM: arm64: nv: FPSIMD/SVE, plus some other CPTR goodies
Date: Thu, 13 Jun 2024 20:17:41 +0000 [thread overview]
Message-ID: <20240613201756.3258227-1-oliver.upton@linux.dev> (raw)
As discussed, here's the combined series of Marc + I's patches that
implement all the trap forwarding / merging logic required to observe
the L1 CPTR configuration when running an L2 guest.
Like before, this was tested on Neoverse-V2 with L0, L1, and L2 running
fpsimd-test and sve-test on top of one another.
v1 [1] -> v2:
- Grab Marc's CPTR trap patches [2]
- Avoid taking two traps when L1 accesses ZCR_EL2 while the host owns
FP regs. The fast path will now load the FP regs and forward the
sysreg trap to the slow path for complete handling.
- Add a comment describing the above behavior (Marc)
- Avoid the use of guest_hyp_*_traps_enabled() in
__activate_cptr_traps() for better codegen (Marc)
- Document the reason for only testing bit[0] of CPTR_EL2.xEN when
folding L1 traps into the hardware CPTR value.
- Add a helper for synthesizing SVE traps, rather than open-coding the
ESR value in access_zcr_el2()
[1]: https://lore.kernel.org/kvmarm/20240531231358.1000039-1-oliver.upton@linux.dev/
[2]: https://lore.kernel.org/kvmarm/20240604130553.199981-1-maz@kernel.org/
Jintack Lim (1):
KVM: arm64: nv: Forward FP/ASIMD traps to guest hypervisor
Marc Zyngier (4):
KVM: arm64: nv: Handle CPACR_EL1 traps
KVM: arm64: nv: Add TCPAC/TTA to CPTR->CPACR conversion helper
KVM: arm64: nv: Add trap description for CPTR_EL2
KVM: arm64: nv: Add additional trap setup for CPTR_EL2
Oliver Upton (10):
KVM: arm64: nv: Forward SVE traps to guest hypervisor
KVM: arm64: nv: Load guest FP state for ZCR_EL2 trap
KVM: arm64: nv: Load guest hyp's ZCR into EL1 state
KVM: arm64: nv: Handle ZCR_EL2 traps
KVM: arm64: nv: Save guest's ZCR_EL2 when in hyp context
KVM: arm64: nv: Use guest hypervisor's max VL when running nested
guest
KVM: arm64: nv: Ensure correct VL is loaded before saving SVE state
KVM: arm64: Spin off helper for programming CPTR traps
KVM: arm64: nv: Honor guest hypervisor's FP/SVE traps in CPTR_EL2
KVM: arm64: Allow the use of SVE+NV
arch/arm64/include/asm/kvm_emulate.h | 55 +++++++++
arch/arm64/include/asm/kvm_host.h | 7 ++
arch/arm64/include/asm/kvm_nested.h | 5 +-
arch/arm64/kvm/arm.c | 5 -
arch/arm64/kvm/emulate-nested.c | 91 ++++++++++++++
arch/arm64/kvm/fpsimd.c | 22 +++-
arch/arm64/kvm/handle_exit.c | 19 ++-
arch/arm64/kvm/hyp/include/hyp/switch.h | 24 +++-
arch/arm64/kvm/hyp/vhe/switch.c | 156 ++++++++++++++++++++----
arch/arm64/kvm/nested.c | 3 +-
arch/arm64/kvm/sys_regs.c | 38 ++++++
11 files changed, 380 insertions(+), 45 deletions(-)
base-commit: c3f38fa61af77b49866b006939479069cd451173
--
2.45.2.627.g7a2c4fd464-goog
next reply other threads:[~2024-06-13 20:18 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-13 20:17 Oliver Upton [this message]
2024-06-13 20:17 ` [PATCH v2 01/15] KVM: arm64: nv: Forward FP/ASIMD traps to guest hypervisor Oliver Upton
2024-06-14 10:56 ` Marc Zyngier
2024-06-13 20:17 ` [PATCH v2 02/15] KVM: arm64: nv: Forward SVE " Oliver Upton
2024-06-13 20:17 ` [PATCH v2 03/15] KVM: arm64: nv: Handle CPACR_EL1 traps Oliver Upton
2024-06-14 13:20 ` Marc Zyngier
2024-06-14 20:06 ` Oliver Upton
2024-06-13 20:17 ` [PATCH v2 04/15] KVM: arm64: nv: Load guest FP state for ZCR_EL2 trap Oliver Upton
2024-06-13 20:17 ` [PATCH v2 05/15] KVM: arm64: nv: Load guest hyp's ZCR into EL1 state Oliver Upton
2024-06-14 11:14 ` Marc Zyngier
2024-06-14 20:08 ` Oliver Upton
2024-06-13 20:17 ` [PATCH v2 06/15] KVM: arm64: nv: Handle ZCR_EL2 traps Oliver Upton
2024-06-13 20:17 ` [PATCH v2 07/15] KVM: arm64: nv: Save guest's ZCR_EL2 when in hyp context Oliver Upton
2024-06-13 20:17 ` [PATCH v2 08/15] KVM: arm64: nv: Use guest hypervisor's max VL when running nested guest Oliver Upton
2024-06-13 20:17 ` [PATCH v2 09/15] KVM: arm64: nv: Ensure correct VL is loaded before saving SVE state Oliver Upton
2024-06-13 20:17 ` [PATCH v2 10/15] KVM: arm64: Spin off helper for programming CPTR traps Oliver Upton
2024-06-13 20:17 ` [PATCH v2 11/15] KVM: arm64: nv: Honor guest hypervisor's FP/SVE traps in CPTR_EL2 Oliver Upton
2024-06-13 20:17 ` [PATCH v2 12/15] KVM: arm64: nv: Add TCPAC/TTA to CPTR->CPACR conversion helper Oliver Upton
2024-06-13 20:17 ` [PATCH v2 13/15] KVM: arm64: nv: Add trap description for CPTR_EL2 Oliver Upton
2024-06-13 20:17 ` [PATCH v2 14/15] KVM: arm64: nv: Add additional trap setup " Oliver Upton
2024-06-13 20:17 ` [PATCH v2 15/15] KVM: arm64: Allow the use of SVE+NV Oliver Upton
2024-06-14 13:36 ` [PATCH v2 00/15] KVM: arm64: nv: FPSIMD/SVE, plus some other CPTR goodies Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240613201756.3258227-1-oliver.upton@linux.dev \
--to=oliver.upton@linux.dev \
--cc=james.morse@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=suzuki.poulose@arm.com \
--cc=tabba@google.com \
--cc=yuzenghui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.