2024-06-04 17:05:13

by Paul E. McKenney

[permalink] [raw]
Subject: [PATCH v3 cmpxchg 2/4] sh: Emulate one-byte cmpxchg

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 <[email protected]>
Cc: Andi Shyti <[email protected]>
Cc: Palmer Dabbelt <[email protected]>
Cc: Masami Hiramatsu <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: <[email protected]>
---
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 5e6a3ead51fb1..f723e2256c9c1 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);
}
--
2.40.1



Subject: Re: [PATCH v3 cmpxchg 2/4] sh: Emulate one-byte cmpxchg

Hello,

On Tue, 2024-06-04 at 10:04 -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 <[email protected]>
> Cc: Andi Shyti <[email protected]>
> Cc: Palmer Dabbelt <[email protected]>
> Cc: Masami Hiramatsu <[email protected]>
> Cc: Arnd Bergmann <[email protected]>
> Cc: <[email protected]>
> ---
> 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 5e6a3ead51fb1..f723e2256c9c1 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);
> }

Reviewed-by: John Paul Adrian Glaubitz <[email protected]>

I can pick this up through my SH tree unless someone insists this to
go through some other tree.

Adrian

PS: I'm a bit stumped that I'm not CC'ed as the SH maintainer.

--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913

2024-06-04 17:50:45

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH v3 cmpxchg 2/4] sh: Emulate one-byte cmpxchg

On Tue, Jun 04, 2024 at 07:09:11PM +0200, John Paul Adrian Glaubitz wrote:
> Hello,
>
> On Tue, 2024-06-04 at 10:04 -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 <[email protected]>
> > Cc: Andi Shyti <[email protected]>
> > Cc: Palmer Dabbelt <[email protected]>
> > Cc: Masami Hiramatsu <[email protected]>
> > Cc: Arnd Bergmann <[email protected]>
> > Cc: <[email protected]>
> > ---
> > 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 5e6a3ead51fb1..f723e2256c9c1 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);
> > }
>
> Reviewed-by: John Paul Adrian Glaubitz <[email protected]>
>
> I can pick this up through my SH tree unless someone insists this to
> go through some other tree.

Please do take it, and thank you! When I see it in -next, I will drop
it from my tree.

> Adrian
>
> PS: I'm a bit stumped that I'm not CC'ed as the SH maintainer.

Me too, now that you mention it. I did generate the list some time
back, but "git blame" shows you being maintainer for more than a year.
Yet I do have the linux-sh email list, so it is unlikely that I pasted
the get_maintainer.pl output from the wrong commit.

I am forced to hypothesize that I fat-fingered the output of
get_maintainer.pl when adding the Cc lines to that commit.

Please accept my apologies for having left you out!

Thanx, Paul

Subject: Re: [PATCH v3 cmpxchg 2/4] sh: Emulate one-byte cmpxchg

Hello,

On Tue, 2024-06-04 at 10:50 -0700, Paul E. McKenney wrote:
> > Reviewed-by: John Paul Adrian Glaubitz <[email protected]>
> >
> > I can pick this up through my SH tree unless someone insists this to
> > go through some other tree.
>
> Please do take it, and thank you! When I see it in -next, I will drop
> it from my tree.

I'll pick it up over the weekend for which I have planned my usual kernel
review and merge session.

> > Adrian
> >
> > PS: I'm a bit stumped that I'm not CC'ed as the SH maintainer.
>
> Me too, now that you mention it. I did generate the list some time
> back, but "git blame" shows you being maintainer for more than a year.
> Yet I do have the linux-sh email list, so it is unlikely that I pasted
> the get_maintainer.pl output from the wrong commit.
>
> I am forced to hypothesize that I fat-fingered the output of
> get_maintainer.pl when adding the Cc lines to that commit.
>
> Please accept my apologies for having left you out!

No worries. I was just surprised as I assume get_maintainer.pl should have
done the right thing and spit out the names of the responsible maintainers.

Thanks,
Adrian

--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913

2024-06-04 21:15:03

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH v3 cmpxchg 2/4] sh: Emulate one-byte cmpxchg

On Tue, Jun 04, 2024 at 07:56:49PM +0200, John Paul Adrian Glaubitz wrote:
> Hello,
>
> On Tue, 2024-06-04 at 10:50 -0700, Paul E. McKenney wrote:
> > > Reviewed-by: John Paul Adrian Glaubitz <[email protected]>
> > >
> > > I can pick this up through my SH tree unless someone insists this to
> > > go through some other tree.
> >
> > Please do take it, and thank you! When I see it in -next, I will drop
> > it from my tree.
>
> I'll pick it up over the weekend for which I have planned my usual kernel
> review and merge session.

Very good, and again, thank you!

> > > Adrian
> > >
> > > PS: I'm a bit stumped that I'm not CC'ed as the SH maintainer.
> >
> > Me too, now that you mention it. I did generate the list some time
> > back, but "git blame" shows you being maintainer for more than a year.
> > Yet I do have the linux-sh email list, so it is unlikely that I pasted
> > the get_maintainer.pl output from the wrong commit.
> >
> > I am forced to hypothesize that I fat-fingered the output of
> > get_maintainer.pl when adding the Cc lines to that commit.
> >
> > Please accept my apologies for having left you out!
>
> No worries. I was just surprised as I assume get_maintainer.pl should have
> done the right thing and spit out the names of the responsible maintainers.

I will look more carefully next time.

Thanx, Paul