From: Catalin Marinas <catalin.marinas@arm.com>
To: Will Deacon <will@kernel.org>
Cc: "Guilherme G. Piccoli" <gpiccoli@igalia.com>,
linux-arm-kernel@lists.infradead.org, mark.rutland@arm.com,
robin.murphy@arm.com, gshan@redhat.com, kernel-dev@igalia.com,
kernel@gpiccoli.net, Mark Brown <broonie@kernel.org>,
Ryan Houdek <sonicadvance1@gmail.com>
Subject: Re: [PATCH] arm64/kernel: Expose the running CPU of a native task in TPIDRRO_EL0
Date: Mon, 17 Aug 2026 09:51:11 +0100 [thread overview]
Message-ID: <aoLLf_iZq6DLNpLO@arm.com> (raw)
In-Reply-To: <aoGIEEje1NIMTjyv@willie-the-truck>
On Sun, Aug 16, 2026 at 10:51:12AM +0100, Will Deacon wrote:
> On Sat, Aug 15, 2026 at 12:19:32PM -0300, Guilherme G. Piccoli wrote:
> > The register TPIDRRO_EL0 has 2 meanings / usages today, depending on
> > the mode userspace is running:
> >
> > - For native/arm64 mode, this register is always 0 from the userspace
> > perspective. In the kernel, it is used during ventry (entry.S) as
> > a scratch register, related to KPTI (stashes x30 in fact).
> >
> > - For 32-bit compat tasks, this register holds the TLS userspace pointer,
> > and is not used for KPTI or anything else in entry.S. This is ABI and
> > userspace can count on having a valid TLS pointer there.
> >
> > Happens that other operating systems follow a similar approach than 32-bit
> > compat mode, even for arm64: in both Windows[0] and MacOS (xnu/darwin)[1],
> > this register is used to hold the running CPU of the current task, hence
> > offering a very fast / non-syscall way for a given task to figure its
> > running CPU id.
>
> I don't think we should allocate TPIDRRO_EL0 for this as it precludes us
> using it for anything else in the future. If you want the current CPU,
> then I think you're better off using either rseq (which I thought could
> do this) or looking at reviving the vDSO work you mention (but that has
> unresolved limitations iirc).
Indeed. IIRC glibc already implements getcpu() using rseq.
--
Catalin
next prev parent reply other threads:[~2026-08-17 8:51 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-15 15:19 [PATCH] arm64/kernel: Expose the running CPU of a native task in TPIDRRO_EL0 Guilherme G. Piccoli
2026-08-15 16:52 ` Bradley Morgan
2026-08-16 9:51 ` Will Deacon
2026-08-17 8:51 ` Catalin Marinas [this message]
2026-08-17 12:53 ` Ryan Houdek
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=aoLLf_iZq6DLNpLO@arm.com \
--to=catalin.marinas@arm.com \
--cc=broonie@kernel.org \
--cc=gpiccoli@igalia.com \
--cc=gshan@redhat.com \
--cc=kernel-dev@igalia.com \
--cc=kernel@gpiccoli.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=robin.murphy@arm.com \
--cc=sonicadvance1@gmail.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.