From: Catalin Marinas <catalin.marinas@arm.com>
To: Will Deacon <will@kernel.org>
Cc: Wei Wang <wvw@google.com>, Mark Brown <broonie@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
"Rafael J . Wysocki" <rafael@kernel.org>,
linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org,
wei.vince.wang@gmail.com
Subject: Re: [PATCH] arm64: suspend: Save and restore TPIDR2_EL0 across CPU suspend
Date: Tue, 3 Nov 2026 15:49:34 +0000 [thread overview]
Message-ID: <auoCjmMnzRE8c1cN@arm.com> (raw)
In-Reply-To: <aunKa8uBZJTCzVjd@willie-the-truck>
On Tue, Nov 03, 2026 at 11:50:03AM +0000, Will Deacon wrote:
> On Mon, Nov 02, 2026 at 11:48:13PM +0000, Wei Wang wrote:
> > On systems with FEAT_SME, TPIDR2_EL0 is part of userspace thread state:
> > the AAPCS64 SME ABI uses it as the ZA lazy-save pointer, and the kernel
> > context-switches it eagerly in tls_thread_switch(). While a task is
> > running, the live register is the only copy of its value.
[...]
> There's a lot of unnecessary (AI-generated?) detail in here. Please can
> you trim this down a bit? I don't think we care about the firmware part,
> the stuff about idle or the bionic crash. The bottom line is that we're
> not saving/restoring a live EL0 register across suspend/resume.
I should get an LLM to trim it down when applying ;).
> > diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S
> > index 7afbece885a3..c7b7fa6491c3 100644
> > --- a/arch/arm64/mm/proc.S
> > +++ b/arch/arm64/mm/proc.S
> > @@ -103,6 +103,10 @@ SYM_FUNC_START(cpu_do_suspend)
> > alternative_if ARM64_HAS_TCR2
> > mrs x2, REG_TCR2_EL1
> > str x2, [x0, #104]
> > +alternative_else_nop_endif
> > +alternative_if ARM64_SME
> > + mrs_s x2, SYS_TPIDR2_EL0
> > + str x2, [x0, #112]
> > alternative_else_nop_endif
> > ret
> > SYM_FUNC_END(cpu_do_suspend)
> > @@ -142,6 +146,10 @@ alternative_if ARM64_HAS_TCR2
> > ldr x2, [x0, #104]
> > msr REG_TCR2_EL1, x2
> > alternative_else_nop_endif
> > +alternative_if ARM64_SME
> > + ldr x2, [x0, #112]
> > + msr_s SYS_TPIDR2_EL0, x2
> > +alternative_else_nop_endif
>
> nit: We use msr and REG_* for TCR2, so it would be more consistent to do
> the same for TPIDR2_EL0 if the assembler is happy with it.
TPIDR2 is not defined in arch/arm64/tools/sysreg yet (for some reason,
only TPIDR_EL1 is). Since this is a cc stable, I think we can leave it
as is and do a TPIDR* cleanup going forward.
--
Catalin
next prev parent reply other threads:[~2026-11-03 15:49 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-02 23:48 [PATCH] arm64: suspend: Save and restore TPIDR2_EL0 across CPU suspend Wei Wang
2026-11-03 11:50 ` Will Deacon
2026-11-03 15:49 ` Catalin Marinas [this message]
2026-11-03 17:50 ` Wei Wang
2026-11-03 13:56 ` Mark Brown
2026-11-03 17:57 ` Wei Wang
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=auoCjmMnzRE8c1cN@arm.com \
--to=catalin.marinas@arm.com \
--cc=broonie@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=rafael@kernel.org \
--cc=stable@vger.kernel.org \
--cc=wei.vince.wang@gmail.com \
--cc=will@kernel.org \
--cc=wvw@google.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.