From: "Thomas Weißschuh" <linux@weissschuh.net>
To: "André Almeida" <andrealmeid@igalia.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>, Thomas Gleixner <tglx@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Carlos O'Donell <carlos@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Florian Weimer <fweimer@redhat.com>,
Rich Felker <dalias@aerifal.cx>,
Torvald Riegel <triegel@redhat.com>,
Darren Hart <dvhart@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
Davidlohr Bueso <dave@stgolabs.net>,
Arnd Bergmann <arnd@arndb.de>,
"Liam R . Howlett" <Liam.Howlett@oracle.com>,
Uros Bizjak <ubizjak@gmail.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
kernel-dev@igalia.com
Subject: Re: [PATCH RFC v2 2/2] arm64: vdso: Implement __vdso_futex_robust_try_unlock()
Date: Sun, 26 Apr 2026 20:30:35 +0200 [thread overview]
Message-ID: <7ddc1c74-c504-44c6-8d51-d10d436c0db8@t-8ch.de> (raw)
In-Reply-To: <20260424-tonyk-robust_arm-v2-2-db4e46f752cf@igalia.com>
On 2026-04-24 15:56:01-0300, André Almeida wrote:
(...)
> Signed-off-by: André Almeida <andrealmeid@igalia.com>
> ---
> RFC:
> - Should I duplicate the explanation found in the x86 commit or can I just
> point to it?
> - Only LL/SC for now but I can add LSE later if this looks good
> - It the objdump I see that op_pending is store at x2. But how stable is this,
> how can I write it in a way that's always x2?
> ---
> arch/arm64/Kconfig | 1 +
> arch/arm64/include/asm/futex_robust.h | 35 +++++++++++++
> arch/arm64/kernel/vdso/Makefile | 9 +++-
> arch/arm64/kernel/vdso/vdso.lds.S | 4 ++
> .../kernel/vdso/vfutex_robust_list_try_unlock.c | 59 ++++++++++++++++++++++
> 5 files changed, 107 insertions(+), 1 deletion(-)
What about the actual 32-bit vDSO in arch/arm64/kernel/vdso32/ ?
(...)
> diff --git a/arch/arm64/kernel/vdso/vfutex_robust_list_try_unlock.c b/arch/arm64/kernel/vdso/vfutex_robust_list_try_unlock.c
> new file mode 100644
> index 000000000000..e8a8fb22a2fa
> --- /dev/null
> +++ b/arch/arm64/kernel/vdso/vfutex_robust_list_try_unlock.c
> @@ -0,0 +1,59 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +#include <vdso/futex.h>
> +#include <linux/stringify.h>
> +
> +#define LABEL(name, sz) __stringify(__futex_list##sz##_try_unlock_cs_##name)
We should have some defines for these symbols. While they are not
userspace ABI, they will be used by the selftests.
> +#define GLOBLS(sz) ".globl " LABEL(start, sz) ", " LABEL(success, sz) ", " LABEL(end, sz) "\n"
> +
> +__u32 __vdso_futex_robust_list64_try_unlock(__u32 *lock, __u32 tid, __u64 *pop)
> +{
> + __u32 val, result;
> +
> + asm volatile (
> + GLOBLS(64)
> + " prfm pstl1strm, %[lock] \n"
> + LABEL(start, 64)": \n"
> + " ldxr %[val], %[lock] \n"
> + " cmp %[tid], %[val] \n"
> + " bne " LABEL(end, 64)" \n"
> + " stlxr %w[result], xzr, %[lock] \n"
> + " cbnz %w[result], " LABEL(start, 64)" \n"
> + LABEL(success, 64)": \n"
> + " str xzr, %[pop] \n"
> + LABEL(end, 64)": \n"
> +
> + : [val] "=&r" (val), [result] "=r" (result)
> + : [tid] "r" (tid), [lock] "Q" (*lock), [pop] "Q" (*pop)
> + : "memory"
> + );
My clang 22.1.3 chokes on the assembly in this patch.
> +
> + return val;
> +}
> +
> +#ifdef CONFIG_COMPAT_VDSO
I am wondering about the CONFIG_COMPAT{,_VDSO} dependency here.
As far as I know the list32 variant is meant to be used by code
emulators which run 32-bit code on a 64-bit kernel, for example FEX.
But these emulators don't actually seem to need CONFIG_COMPAT.
So the dependency does not look correct.
The space savings also should be irrelevant.
The x86 series from Thomas does the same, maybe he will read this
comment, otherwise I'll bring it up on his series, too.
> +__u32 __vdso_futex_robust_list32_try_unlock(__u32 *lock, __u32 tid, __u32 *pop)
> +{
> + __u32 val, result;
> +
> + asm volatile (
> + GLOBLS(32)
> + " prfm pstl1strm, %[lock] \n"
> + LABEL(start, 32)": \n"
> + " ldxr %w[val], %[lock] \n"
> + " cmp %w[tid], %w[val] \n"
> + " bne " LABEL(end, 32)" \n"
> + " stlxr %w[result], wzr, %w[lock] \n"
> + " cbnz %w[result], " LABEL(start, 32)" \n"
> + LABEL(success, 32)": \n"
> + " str wzr, %w[pop] \n"
> + LABEL(end, 32)": \n"
> +
> + : [val] "=&r" (val), [result] "=r" (result)
> + : [tid] "r" (tid), [lock] "Q" (*lock), [pop] "Q" (*pop)
> + : "memory"
> + );
> +
> + return val;
> +}
> +#endif
next prev parent reply other threads:[~2026-04-26 18:30 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-24 18:55 [PATCH RFC v2 0/2] " André Almeida
2026-04-24 18:56 ` [PATCH RFC v2 1/2] arm64: vdso: Prepare for robust futex unlock support André Almeida
2026-04-26 18:07 ` Thomas Weißschuh
2026-04-27 16:20 ` André Almeida
2026-04-26 19:04 ` Thomas Weißschuh
2026-04-24 18:56 ` [PATCH RFC v2 2/2] arm64: vdso: Implement __vdso_futex_robust_try_unlock() André Almeida
2026-04-26 18:30 ` Thomas Weißschuh [this message]
2026-04-27 16:26 ` André Almeida
2026-04-27 16:48 ` Thomas Weißschuh
2026-04-28 11:00 ` [PATCH RFC v2 0/2] " Sebastian Andrzej Siewior
2026-05-22 22:11 ` André Almeida
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=7ddc1c74-c504-44c6-8d51-d10d436c0db8@t-8ch.de \
--to=linux@weissschuh.net \
--cc=Liam.Howlett@oracle.com \
--cc=andrealmeid@igalia.com \
--cc=arnd@arndb.de \
--cc=bigeasy@linutronix.de \
--cc=carlos@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=dalias@aerifal.cx \
--cc=dave@stgolabs.net \
--cc=dvhart@infradead.org \
--cc=fweimer@redhat.com \
--cc=kernel-dev@igalia.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@kernel.org \
--cc=triegel@redhat.com \
--cc=ubizjak@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®