Messages in this thread | | | Subject | Re: [PATCH v2 cmpxchg 12/13] sh: Emulate one-byte cmpxchg | From | John Paul Adrian Glaubitz <> | Date | Thu, 02 May 2024 06:52:53 +0200 |
| |
Hi Paul,
On Wed, 2024-05-01 at 16:01 -0700, Paul E. McKenney wrote: > Use the new cmpxchg_emu_u8() to emulate one-byte cmpxchg() on sh. > > [ paulmck: Drop two-byte support per Arnd Bergmann feedback. ] > [ paulmck: Apply feedback from Naresh Kamboju. ] > [ Apply Geert Uytterhoeven feedback. ] > > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > Cc: Andi Shyti <andi.shyti@linux.intel.com> > Cc: Palmer Dabbelt <palmer@rivosinc.com> > Cc: Masami Hiramatsu <mhiramat@kernel.org> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: <linux-sh@vger.kernel.org> > --- > arch/sh/Kconfig | 1 + > arch/sh/include/asm/cmpxchg.h | 3 +++ > 2 files changed, 4 insertions(+) > > diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig > index 2ad3e29f0ebec..f47e9ccf4efd2 100644 > --- a/arch/sh/Kconfig > +++ b/arch/sh/Kconfig > @@ -16,6 +16,7 @@ config SUPERH > select ARCH_HIBERNATION_POSSIBLE if MMU > select ARCH_MIGHT_HAVE_PC_PARPORT > select ARCH_WANT_IPC_PARSE_VERSION > + select ARCH_NEED_CMPXCHG_1_EMU > select CPU_NO_EFFICIENT_FFS > select DMA_DECLARE_COHERENT > select GENERIC_ATOMIC64 > diff --git a/arch/sh/include/asm/cmpxchg.h b/arch/sh/include/asm/cmpxchg.h > index 5d617b3ef78f7..1e5dc5ccf7bf5 100644 > --- a/arch/sh/include/asm/cmpxchg.h > +++ b/arch/sh/include/asm/cmpxchg.h > @@ -9,6 +9,7 @@ > > #include <linux/compiler.h> > #include <linux/types.h> > +#include <linux/cmpxchg-emu.h> > > #if defined(CONFIG_GUSA_RB) > #include <asm/cmpxchg-grb.h> > @@ -56,6 +57,8 @@ static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old, > unsigned long new, int size) > { > switch (size) { > + case 1: > + return cmpxchg_emu_u8(ptr, old, new); > case 4: > return __cmpxchg_u32(ptr, old, new); > }
Thanks for the patch. However, I don't quite understand its purpose.
There is already a case for 8-byte cmpxchg in the switch statement below:
case 1: \ __xchg__res = xchg_u8(__xchg_ptr, x); \ break;
Does cmpxchg_emu_u8() have any advantages over the native xchg_u8()?
Thanks, Adrian
-- .''`. John Paul Adrian Glaubitz : :' : Debian Developer `. `' Physicist `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
| |