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, Oliver Upton <oliver.upton@linux.dev>
Subject: [PATCH 00/11] KVM: arm64: nv: FPSIMD/SVE support
Date: Fri, 31 May 2024 23:13:47 +0000 [thread overview]
Message-ID: <20240531231358.1000039-1-oliver.upton@linux.dev> (raw)
Hey!
I've decided to start messing around with nested and have SVE support
working for a nested guest. For the sake of landing a semi-complete
feature upstream, I've also picked up the FPSIMD patches from the NV
series Marc is carrying.
The most annoying part about this series (IMO) is that ZCR_EL2 traps
behave differently from what needs to be virtualized for the guest when
HCR_EL2.NV = 1, as it takes a sysreg trap (EC = 0x18) instead of an SVE
trap (EC = 0x19). So, we need to synthesize the ESR value when
reflecting back into the guest hypervisor.
Otherwise, some care is required to slap the guest hypervisor's ZCR_EL2
into the right place depending on whether or not the vCPU is in a hyp
context, since it affects the hyp's usage of SVE in addition to the VM.
There's more work to be done for honoring the L1's CPTR traps, as this
series only focuses on getting SVE and FPSIMD traps right. We'll get
there one day.
I tested this using a mix of the fpsimd-test and sve-test selftests
running at L0, L1, and L2 concurrently on Neoverse V2.
Jintack Lim (1):
KVM: arm64: nv: Forward FP/ASIMD traps to guest hypervisor
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 | 47 +++++++++++++++++++
arch/arm64/include/asm/kvm_host.h | 7 +++
arch/arm64/include/asm/kvm_nested.h | 1 -
arch/arm64/kvm/arm.c | 5 --
arch/arm64/kvm/fpsimd.c | 22 +++++++--
arch/arm64/kvm/handle_exit.c | 19 ++++++--
arch/arm64/kvm/hyp/include/hyp/switch.h | 43 ++++++++++++++++-
arch/arm64/kvm/hyp/vhe/switch.c | 62 +++++++++++++++----------
arch/arm64/kvm/nested.c | 3 +-
arch/arm64/kvm/sys_regs.c | 40 ++++++++++++++++
10 files changed, 206 insertions(+), 43 deletions(-)
base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
--
2.45.1.288.g0e0cd299f1-goog
next reply other threads:[~2024-05-31 23:14 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-31 23:13 Oliver Upton [this message]
2024-05-31 23:13 ` [PATCH 01/11] KVM: arm64: nv: Forward FP/ASIMD traps to guest hypervisor Oliver Upton
2024-05-31 23:13 ` [PATCH 02/11] KVM: arm64: nv: Forward SVE " Oliver Upton
2024-05-31 23:13 ` [PATCH 03/11] KVM: arm64: nv: Load guest FP state for ZCR_EL2 trap Oliver Upton
2024-06-01 9:47 ` Marc Zyngier
2024-06-01 16:47 ` Oliver Upton
2024-05-31 23:13 ` [PATCH 04/11] KVM: arm64: nv: Load guest hyp's ZCR into EL1 state Oliver Upton
2024-05-31 23:13 ` [PATCH 05/11] KVM: arm64: nv: Handle ZCR_EL2 traps Oliver Upton
2024-05-31 23:13 ` [PATCH 06/11] KVM: arm64: nv: Save guest's ZCR_EL2 when in hyp context Oliver Upton
2024-05-31 23:13 ` [PATCH 07/11] KVM: arm64: nv: Use guest hypervisor's max VL when running nested guest Oliver Upton
2024-05-31 23:13 ` [PATCH 08/11] KVM: arm64: nv: Ensure correct VL is loaded before saving SVE state Oliver Upton
2024-05-31 23:13 ` [PATCH 09/11] KVM: arm64: Spin off helper for programming CPTR traps Oliver Upton
2024-05-31 23:13 ` [PATCH 10/11] KVM: arm64: nv: Honor guest hypervisor's FP/SVE traps in CPTR_EL2 Oliver Upton
2024-06-03 12:36 ` Marc Zyngier
2024-06-03 17:28 ` Oliver Upton
2024-06-04 11:14 ` Marc Zyngier
2024-06-04 17:44 ` Oliver Upton
2024-05-31 23:13 ` [PATCH 11/11] KVM: arm64: Allow the use of SVE+NV Oliver Upton
2024-06-01 10:24 ` [PATCH 00/11] KVM: arm64: nv: FPSIMD/SVE support Marc Zyngier
2024-06-01 16:57 ` Oliver Upton
2024-06-02 14:28 ` 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=20240531231358.1000039-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=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox