From: Marc Zyngier <maz@kernel.org>
To: Mark Brown <broonie@kernel.org>
Cc: Fuad Tabba <fuad.tabba@linux.dev>,
Mark Rutland <mark.rutland@arm.com>,
Joey Gouly <joey.gouly@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Will Deacon <will@kernel.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Jonathan Corbet <corbet@lwn.net>, Shuah Khan <shuah@kernel.org>,
Oliver Upton <oupton@kernel.org>,
Dave Martin <Dave.Martin@arm.com>,
Ben Horgan <ben.horgan@arm.com>,
Jean-Philippe Brucker <jpb@kernel.org>,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org,
Peter Maydell <peter.maydell@linaro.org>,
Eric Auger <eric.auger@redhat.com>
Subject: Re: [PATCH v12 02/29] arm64/fpsimd: Update FA64 and ZT0 enables when loading SME state
Date: Sun, 19 Jul 2026 09:35:53 +0100 [thread overview]
Message-ID: <87a4rnqsuu.wl-maz@kernel.org> (raw)
In-Reply-To: <43f21c65-c5ba-44a3-9741-548390df369b@sirena.org.uk>
On Sat, 18 Jul 2026 15:24:20 +0100,
Mark Brown <broonie@kernel.org> wrote:
>
> [1 <text/plain; us-ascii (7bit)>]
> On Sat, Jul 18, 2026 at 02:30:04PM +0100, Fuad Tabba wrote:
> > On Sat, 18 Jul 2026 at 01:35, Mark Brown <broonie@kernel.org> wrote:
>
> > > Actually I remembered: while SCMR_EL1.LEN is self synchronising the
> > > "without the need for explict synchronization" wording is not present
> > > for SMCR_EL1.{FA64,EZT0} and this is no longer explicitly just an update
> > > of LEN. It's possible I'm being overly paranoid here, I'll leave the
> > > isb() and add a comment for the next version.
>
> > I went through the ARM ARM (DDI 0487 M.c) on this and I don't think
> > you're being overly paranoid, I believe the isb() is needed here.
>
> Thanks for double checking so thoroughly.
>
> > And task_fpsimd_load() does make indirect reads of both fields before
> > the next context synchronization event: sme_load_state() executes LDR
> > ZT0, whose execution at EL1 is trapped when SMCR_EL1.EZT0 is 0, and
> > when PSTATE.SM is set sve_load_state() executes WRFFR, which is
> > "illegal when executed in Streaming SVE mode, unless FEAT_SME_FA64 is
> > implemented and enabled" (from the WRFFR description). The MSR SVCR in
> > between doesn't provide the synchronization, since SVCR's
> > self-synchronisation wording covers reads of its own SM and ZA fields
> > only.
>
> Yeah. We should be able to optimise this:
>
> - If there is no change we don't need the isb().
> - If only EZT0 changes and we load state where ZA is disabled then we
> won't try to access ZT0.
> - If only FA64 changes and we load state where streaming mode is
> disabled then we won't try to access streaming mode FFR.
>
> I've gone and implemented the first which will suppress the isb() for
> current host kernel SME usage, the second two are starting to get more
> fiddly than seems sensible to do right now.
I really wish you didn't optimise anything at all at this stage.
"Optimisation" is exactly what got us into so much trouble over the
past two years, and I really don't want SME in KVM to follow the same
trajectory.
So leave this is a straight ISB, no optimisation. Once you come back
with actual data showing that this is a terrible bottleneck affecting
real workloads on real HW, we'll look at it. But until then, please
keep it as stupid as possible.
Thanks,
M.
--
Jazz isn't dead. It just smells funny.
next prev parent reply other threads:[~2026-07-19 8:35 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-09 18:27 [PATCH v12 00/29] KVM: arm64: Implement support for SME Mark Brown
2026-07-09 18:27 ` [PATCH v12 01/29] arm64/sysreg: Define full value read/modify/write helpers Mark Brown
2026-07-09 18:27 ` [PATCH v12 02/29] arm64/fpsimd: Update FA64 and ZT0 enables when loading SME state Mark Brown
2026-07-16 10:52 ` Mark Rutland
2026-07-16 15:28 ` Mark Brown
2026-07-18 0:35 ` Mark Brown
2026-07-18 13:30 ` Fuad Tabba
2026-07-18 14:24 ` Mark Brown
2026-07-19 8:35 ` Marc Zyngier [this message]
2026-07-19 12:40 ` Mark Brown
2026-07-19 12:59 ` Mark Brown
2026-07-09 18:27 ` [PATCH v12 03/29] arm64/fpsimd: Decide to save ZT0 and streaming mode FFR at bind time Mark Brown
2026-07-09 18:27 ` [PATCH v12 04/29] arm64/sve: Factor virtualizable VL discovery out of SVE specific code Mark Brown
2026-07-12 14:12 ` Fuad Tabba
2026-07-13 12:53 ` Mark Brown
2026-07-09 18:27 ` [PATCH v12 05/29] arm64/fpsimd: Determine maximum virtualisable SME vector length Mark Brown
2026-07-09 18:27 ` [PATCH v12 06/29] KVM: arm64: Handle FEAT_IDST for guest accesses to hidden registers Mark Brown
2026-07-09 18:27 ` [PATCH v12 07/29] KVM: arm64: Pull ctxt_has_ helpers to start of sysreg-sr.h Mark Brown
2026-07-09 18:27 ` [PATCH v12 08/29] KVM: arm64: Rename SVE finalization constants to be more general Mark Brown
2026-07-09 18:27 ` [PATCH v12 09/29] KVM: arm64: Define internal features for SME Mark Brown
2026-07-09 18:27 ` [PATCH v12 10/29] KVM: arm64: Rename sve_state_reg_region Mark Brown
2026-07-09 18:27 ` [PATCH v12 11/29] KVM: arm64: Store vector lengths in an array Mark Brown
2026-07-09 18:27 ` [PATCH v12 12/29] KVM: arm64: Factor SVE code out of fpsimd_lazy_switch_to_host() Mark Brown
2026-07-09 18:27 ` [PATCH v12 13/29] KVM: arm64: Document the KVM ABI for SME Mark Brown
2026-07-09 18:27 ` [PATCH v12 14/29] KVM: arm64: Implement SME vector length configuration Mark Brown
2026-07-09 18:27 ` [PATCH v12 15/29] KVM: arm64: Support SME control registers Mark Brown
2026-07-09 18:27 ` [PATCH v12 16/29] KVM: arm64: Support TPIDR2_EL0 Mark Brown
2026-07-09 18:27 ` [PATCH v12 17/29] KVM: arm64: Support SME identification registers for guests Mark Brown
2026-07-09 18:27 ` [PATCH v12 18/29] KVM: arm64: Support SME priority registers Mark Brown
2026-07-09 18:27 ` [PATCH v12 19/29] KVM: arm64: Support userspace access to streaming mode Z and P registers Mark Brown
2026-07-09 18:27 ` [PATCH v12 20/29] KVM: arm64: Flush register state on writes to SVCR.SM and SVCR.ZA Mark Brown
2026-07-09 18:27 ` [PATCH v12 21/29] KVM: arm64: Expose SME specific state to userspace Mark Brown
2026-07-09 18:27 ` [PATCH v12 22/29] KVM: arm64: Context switch SME state for guests Mark Brown
2026-07-12 14:40 ` Fuad Tabba
2026-07-13 13:30 ` Mark Brown
2026-07-09 18:27 ` [PATCH v12 23/29] KVM: arm64: Handle SME exceptions Mark Brown
2026-07-09 18:27 ` [PATCH v12 24/29] KVM: arm64: Expose SME to nested guests Mark Brown
2026-07-09 18:27 ` [PATCH v12 25/29] KVM: arm64: Provide interface for configuring and enabling SME for guests Mark Brown
2026-07-09 18:27 ` [PATCH v12 26/29] KVM: arm64: selftests: Remove spurious check for single bit safe values Mark Brown
2026-07-09 18:27 ` [PATCH v12 27/29] KVM: arm64: selftests: Skip impossible invalid value tests Mark Brown
2026-07-09 18:27 ` [PATCH v12 28/29] KVM: arm64: selftests: Add SME system registers to get-reg-list Mark Brown
2026-07-09 18:27 ` [PATCH v12 29/29] KVM: arm64: selftests: Add SME to set_id_regs test Mark Brown
2026-07-10 8:43 ` [PATCH v12 00/29] KVM: arm64: Implement support for SME Fuad Tabba
2026-07-12 14:03 ` Fuad Tabba
2026-07-13 12:07 ` Mark Brown
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=87a4rnqsuu.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=Dave.Martin@arm.com \
--cc=ben.horgan@arm.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=eric.auger@redhat.com \
--cc=fuad.tabba@linux.dev \
--cc=joey.gouly@arm.com \
--cc=jpb@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=oupton@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=shuah@kernel.org \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
/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.