arch/xtensa/include/asm/cmpxchg.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
The xtensa architecture already has __cmpxchg_local defined upon the
native __cmpxchg_u32 and __generic_cmpxchg_local
Signed-off-by: wuqiang.matt <wuqiang.matt@bytedance.com>
---
arch/xtensa/include/asm/cmpxchg.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/xtensa/include/asm/cmpxchg.h b/arch/xtensa/include/asm/cmpxchg.h
index 675a11ea8de7..956c9925df1c 100644
--- a/arch/xtensa/include/asm/cmpxchg.h
+++ b/arch/xtensa/include/asm/cmpxchg.h
@@ -108,7 +108,7 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr,
* them available.
*/
#define arch_cmpxchg_local(ptr, o, n) \
- ((__typeof__(*(ptr)))__generic_cmpxchg_local((ptr), (unsigned long)(o),\
+ ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \
(unsigned long)(n), sizeof(*(ptr))))
#define arch_cmpxchg64_local(ptr, o, n) __generic_cmpxchg64_local((ptr), (o), (n))
#define arch_cmpxchg64(ptr, o, n) arch_cmpxchg64_local((ptr), (o), (n))
--
2.40.1
On Sat, Nov 4, 2023 at 2:06 AM wuqiang.matt <wuqiang.matt@bytedance.com> wrote: > > The xtensa architecture already has __cmpxchg_local defined upon the > native __cmpxchg_u32 and __generic_cmpxchg_local This description does not make clear why this change is needed. Could you please expand it to cover the 'why' part? > Signed-off-by: wuqiang.matt <wuqiang.matt@bytedance.com> > --- > arch/xtensa/include/asm/cmpxchg.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/xtensa/include/asm/cmpxchg.h b/arch/xtensa/include/asm/cmpxchg.h > index 675a11ea8de7..956c9925df1c 100644 > --- a/arch/xtensa/include/asm/cmpxchg.h > +++ b/arch/xtensa/include/asm/cmpxchg.h > @@ -108,7 +108,7 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr, > * them available. > */ > #define arch_cmpxchg_local(ptr, o, n) \ > - ((__typeof__(*(ptr)))__generic_cmpxchg_local((ptr), (unsigned long)(o),\ > + ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \ > (unsigned long)(n), sizeof(*(ptr)))) > #define arch_cmpxchg64_local(ptr, o, n) __generic_cmpxchg64_local((ptr), (o), (n)) > #define arch_cmpxchg64(ptr, o, n) arch_cmpxchg64_local((ptr), (o), (n)) > -- > 2.40.1 > -- Thanks. -- Max
On 2023/11/4 17:31, Max Filippov wrote: > On Sat, Nov 4, 2023 at 2:06 AM wuqiang.matt <wuqiang.matt@bytedance.com> wrote: >> >> The xtensa architecture already has __cmpxchg_local defined upon the >> native __cmpxchg_u32 and __generic_cmpxchg_local > > This description does not make clear why this change is needed. Could you > please expand it to cover the 'why' part? The purpose of __cmpxchg_local() should be for arch_cmpxchg_local(), similarly for other architectures like x86/arm/powerpc. I noticed that arc/hexagon/openrisc/sh don't have arch_cmpxchg_local defined because my patch triggered an error in kernel building. Then found xtensa's definition of arch_cmpxchg_local() is not reasonable, so proposed this patch to improve. This change is not a must, but an improvement to simply make the codes of arch_cmpxchg_local() more reasonable. The patch link that introduced try_cmpxchg_local and triggered building error: https://lore.kernel.org/all/20231023112452.6290-1-wuqiang.matt@bytedance.com/ >> Signed-off-by: wuqiang.matt <wuqiang.matt@bytedance.com> >> --- >> arch/xtensa/include/asm/cmpxchg.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/xtensa/include/asm/cmpxchg.h b/arch/xtensa/include/asm/cmpxchg.h >> index 675a11ea8de7..956c9925df1c 100644 >> --- a/arch/xtensa/include/asm/cmpxchg.h >> +++ b/arch/xtensa/include/asm/cmpxchg.h >> @@ -108,7 +108,7 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr, >> * them available. >> */ >> #define arch_cmpxchg_local(ptr, o, n) \ >> - ((__typeof__(*(ptr)))__generic_cmpxchg_local((ptr), (unsigned long)(o),\ >> + ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \ >> (unsigned long)(n), sizeof(*(ptr)))) >> #define arch_cmpxchg64_local(ptr, o, n) __generic_cmpxchg64_local((ptr), (o), (n)) >> #define arch_cmpxchg64(ptr, o, n) arch_cmpxchg64_local((ptr), (o), (n)) >> -- >> 2.40.1 >> > >
The xtensa architecture already has __cmpxchg_local defined, which makes
arch_cmpxchg_local's definition as __generic_cmpxchg_local unreasonable.
Signed-off-by: wuqiang.matt <wuqiang.matt@bytedance.com>
---
arch/xtensa/include/asm/cmpxchg.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/xtensa/include/asm/cmpxchg.h b/arch/xtensa/include/asm/cmpxchg.h
index 675a11ea8de7..956c9925df1c 100644
--- a/arch/xtensa/include/asm/cmpxchg.h
+++ b/arch/xtensa/include/asm/cmpxchg.h
@@ -108,7 +108,7 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr,
* them available.
*/
#define arch_cmpxchg_local(ptr, o, n) \
- ((__typeof__(*(ptr)))__generic_cmpxchg_local((ptr), (unsigned long)(o),\
+ ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \
(unsigned long)(n), sizeof(*(ptr))))
#define arch_cmpxchg64_local(ptr, o, n) __generic_cmpxchg64_local((ptr), (o), (n))
#define arch_cmpxchg64(ptr, o, n) arch_cmpxchg64_local((ptr), (o), (n))
--
2.40.1
© 2016 - 2025 Red Hat, Inc.