On Sat, Jul 18, 2026 at 01:35:21AM +0100, Mark Brown wrote:
> On Thu, Jul 16, 2026 at 04:28:02PM +0100, Mark Brown wrote:
> > On Thu, Jul 16, 2026 at 11:52:36AM +0100, Mark Rutland wrote:
>
> > > > if (test_thread_flag(TIF_SME)) {
> > > > - unsigned long vq = sve_vq_from_vl(sme_vl);
> > > > - sysreg_clear_set_s(SYS_SMCR_EL1, SMCR_ELx_LEN,
> > > > vq - 1);
> > > > + sysreg_cond_update_s(SYS_SMCR_EL1,
> > > > task_smcr(current));
> > > > + isb();
> > > > }
>
> > > What's the ISB for? That mysteriously appeared in v11 without
> > > explanation. It wasn't in the original code, prior versions of the
> > > series, or my suggested rework with the task_smcr() helper.
>
> > > I don't believe it's necessary to add an ISB here.
>
> > I can't remember or figure it out, I'll delete.
>
> 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.
Ok.
Given we've already forgotten that once so far, that definitely needs a
comment.
Mark.