Re: [PATCH 2/2] arm64/sme: Restore SMCR_EL1.EZT0 on exit from suspend

From: Dave Martin
Date: Tue Jan 30 2024 - 10:10:55 EST


On Tue, Jan 30, 2024 at 02:34:23PM +0000, Mark Brown wrote:
> On Tue, Jan 30, 2024 at 10:54:06AM +0000, Dave Martin wrote:
> > On Tue, Jan 30, 2024 at 12:02:49AM +0000, Mark Brown wrote:
>
> > > + if (system_supports_sme2())
> > > + smcr |= SMCR_ELx_EZT0;
>
> > Side question: since ZT0 is likely to be sporadically used, maybe it
> > is worth having separate lazy restore for it versus the main SME state?
> > (Not relevant for this series though, and probably best deferred until
> > there is hardware to benchmark on. Also, ZT0 is small compared with
> > the SME state proper...)
>
> One of the advantages SME has here is that we've got a clear indication
> if userspace is actively using the registers through SMSTART and SMSTOP.
> We only restore ZT0 at all whenever PSTATE.ZA is set and the strong

Good point. I was still thinking in SVE mode there.

> recommendation is that should only be set when either ZA or ZT0 are in
> active use for power and performance reasons. While it is likely that
> there will be code that uses ZA but doesn't touch ZT0 I would expect
> that the overhead of entering the kernel to do a lazy restore will be
> sufficiently high for it to be an unreasonable penalty on code that does
> touch it, as you say it's not *that* big compared to likely ZA sizes.

Agreed.

Cheers
---Dave