From: Bradley Morgan <brads@mainlining.org>
To: akpm@linux-foundation.org, vgupta@kernel.org, guoren@kernel.org,
chris@zankel.net, jcmvbkbc@gmail.com
Cc: arnd@arndb.de, paulmck@kernel.org, david.laight.linux@gmail.com,
glaubitz@physik.fu-berlin.de, ysato@users.sourceforge.jp,
dalias@libc.org, linux-snps-arc@lists.infradead.org,
linux-csky@vger.kernel.org, linux-kernel@vger.kernel.org,
brads@mainlining.org
Subject: [PATCH v5 0/3] Add two-byte cmpxchg emulation and wire it into the architectures
Date: Mon, 5 Oct 2026 12:05:53 +0000 [thread overview]
Message-ID: <20261005120556.383004-1-brads@mainlining.org> (raw)
This is v5 of the two-byte cmpxchg emulation series, reduced to the
three architectures still missing after Paul McKenney queued the lib
and sh patches, ARC, csky and xtensa.
The v4 attempt at these folded in a type checking idiom,
(unsigned long)(0 ? *ptr : old), meant to make cmpxchg(&p, 4, 5) fail
to compile. The kernel test robot and Vineet Gupta showed that idiom
breaks real callers, fs/crypto/hooks.c passes a char * and an
unsigned char * to cmpxchg_release(), and the conditional expression
then has incompatible pointer types, which is a hard error on gcc 14
and newer. So this version only adds the case 2 dispatch, the
declarations the architectures already have are kept as is.
The ARC sizeof bug that v4 fixed along the way is in mainline
separately through Vineet's f050c3e61d2a ("ARC: arch_cmpxchg_relaxed
to use size of pointed type not pointer"), so the ARC patch here is
only the case 2 wiring on top of that.
On the why, RCU previously used single-byte cmpxchg(), which is what
motivated cmpxchg_emu_u8() in the first place, and Paul has now
queued cmpxchg_emu_u16(). Unused new code is frowned upon, so wiring
it into the architectures that need it is the missing half, and
there are existing workarounds for the missing two-byte cmpxchg() in
the tree, _Q_PENDING_BITS for one, that can make use of it.
Per Paul's suggestion each patch is standalone and can go in
independently, they only depend on the lib patch already queued.
Each one was build tested with the real cross toolchain, ARC with
arc-linux-gnu-gcc and csky and xtensa with the gcc 16.2 crosstool
builds Vineet pointed at, W=1, with the macro instantiated on
u8, u16, u32 and pointer types, confirming the new dispatch is
reached and no new warnings appear. The pointer instantiation
covers the fs/crypto/hooks.c case that broke v4.
Bradley Morgan (3):
ARC: Emulate two-byte cmpxchg
csky: Emulate two-byte cmpxchg
xtensa: Emulate two-byte cmpxchg
arch/arc/include/asm/cmpxchg.h | 3 +++
arch/csky/include/asm/cmpxchg.h | 9 +++++++++
arch/xtensa/include/asm/cmpxchg.h | 1 +
3 files changed, 13 insertions(+)
--
2.53.0
next reply other threads:[~2026-10-05 12:08 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-05 12:05 Bradley Morgan [this message]
2026-10-05 12:05 ` [PATCH v5 1/3] ARC: Emulate two-byte cmpxchg Bradley Morgan
2026-10-05 12:08 ` Bradley Morgan
2026-10-05 12:05 ` [PATCH v5 2/3] csky: " Bradley Morgan
2026-10-05 12:05 ` [PATCH v5 3/3] xtensa: " Bradley Morgan
2026-10-05 12:06 [PATCH v5 0/3] Add two-byte cmpxchg emulation and wire it into the architectures Bradley Morgan
2026-10-05 12:19 ` Bradley Morgan
2026-10-05 18:02 ` David Laight
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=20261005120556.383004-1-brads@mainlining.org \
--to=brads@mainlining.org \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=chris@zankel.net \
--cc=dalias@libc.org \
--cc=david.laight.linux@gmail.com \
--cc=glaubitz@physik.fu-berlin.de \
--cc=guoren@kernel.org \
--cc=jcmvbkbc@gmail.com \
--cc=linux-csky@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-snps-arc@lists.infradead.org \
--cc=paulmck@kernel.org \
--cc=vgupta@kernel.org \
--cc=ysato@users.sourceforge.jp \
/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®