linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH -next] sparc32/sparc64: Provide cmpxchg64()
@ 2013-03-14 19:42 Geert Uytterhoeven
  2013-03-19 20:20 ` David Miller
  0 siblings, 1 reply; 5+ messages in thread
From: Geert Uytterhoeven @ 2013-03-14 19:42 UTC (permalink / raw)
  To: David S. Miller; +Cc: sparclinux, linux-next, Geert Uytterhoeven

sparc/sparc64 allmodconfig:

drivers/block/blockconsole.c: In function ‘bcon_advance_console_bytes’:
drivers/block/blockconsole.c:164: error: implicit declaration of function
‘cmpxchg64’

Map cmpxchg64 to cmpxchg64_local to fix this.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
http://kisskb.ellerman.id.au/kisskb/buildresult/8398811/
http://kisskb.ellerman.id.au/kisskb/buildresult/8398801/

 arch/sparc/include/asm/cmpxchg_32.h |    1 +
 arch/sparc/include/asm/cmpxchg_64.h |    1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/arch/sparc/include/asm/cmpxchg_32.h b/arch/sparc/include/asm/cmpxchg_32.h
index 1fae1a0..284fb96 100644
--- a/arch/sparc/include/asm/cmpxchg_32.h
+++ b/arch/sparc/include/asm/cmpxchg_32.h
@@ -81,5 +81,6 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size)
 	((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\
 			(unsigned long)(n), sizeof(*(ptr))))
 #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
+#define cmpxchg64(ptr, o, n)	cmpxchg64_local((ptr), (o), (n))
 
 #endif /* __ARCH_SPARC_CMPXCHG__ */
diff --git a/arch/sparc/include/asm/cmpxchg_64.h b/arch/sparc/include/asm/cmpxchg_64.h
index b30eb37..4adefe8 100644
--- a/arch/sparc/include/asm/cmpxchg_64.h
+++ b/arch/sparc/include/asm/cmpxchg_64.h
@@ -141,5 +141,6 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr,
 	BUILD_BUG_ON(sizeof(*(ptr)) != 8);				\
 	cmpxchg_local((ptr), (o), (n));					\
   })
+#define cmpxchg64(ptr, o, n)	cmpxchg64_local((ptr), (o), (n))
 
 #endif /* __ARCH_SPARC64_CMPXCHG__ */
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH -next] sparc32/sparc64: Provide cmpxchg64()
  2013-03-14 19:42 [PATCH -next] sparc32/sparc64: Provide cmpxchg64() Geert Uytterhoeven
@ 2013-03-19 20:20 ` David Miller
  2013-03-20  8:05   ` Geert Uytterhoeven
  0 siblings, 1 reply; 5+ messages in thread
From: David Miller @ 2013-03-19 20:20 UTC (permalink / raw)
  To: geert; +Cc: sparclinux, linux-next

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: Thu, 14 Mar 2013 20:42:08 +0100

> sparc/sparc64 allmodconfig:
> 
> drivers/block/blockconsole.c: In function ‘bcon_advance_console_bytes’:
> drivers/block/blockconsole.c:164: error: implicit declaration of function
> ‘cmpxchg64’
> 
> Map cmpxchg64 to cmpxchg64_local to fix this.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>

But, in the sparc 32-bit case, the _local() variants are only atomic
from the perspective of the current cpu, they are not globally atomic.

This is true because the sparc 32-bit cases use the
asm-generic/cmpxchg-local.h helpers.

I really can't apply this, it isn't correct, sorry.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH -next] sparc32/sparc64: Provide cmpxchg64()
  2013-03-19 20:20 ` David Miller
@ 2013-03-20  8:05   ` Geert Uytterhoeven
  2013-03-20 14:11     ` David Miller
  0 siblings, 1 reply; 5+ messages in thread
From: Geert Uytterhoeven @ 2013-03-20  8:05 UTC (permalink / raw)
  To: David Miller; +Cc: sparclinux, linux-next

Hi David,

On Tue, Mar 19, 2013 at 9:20 PM, David Miller <davem@davemloft.net> wrote:
> From: Geert Uytterhoeven <geert@linux-m68k.org>
> Date: Thu, 14 Mar 2013 20:42:08 +0100
>
>> sparc/sparc64 allmodconfig:
>>
>> drivers/block/blockconsole.c: In function ‘bcon_advance_console_bytes’:
>> drivers/block/blockconsole.c:164: error: implicit declaration of function
>> ‘cmpxchg64’
>>
>> Map cmpxchg64 to cmpxchg64_local to fix this.
>>
>> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
>
> But, in the sparc 32-bit case, the _local() variants are only atomic
> from the perspective of the current cpu, they are not globally atomic.
>
> This is true because the sparc 32-bit cases use the
> asm-generic/cmpxchg-local.h helpers.
>
> I really can't apply this, it isn't correct, sorry.

You're right, sorry for that.

The sparc64 part is still OK as it eventually calls __cmpxchg_u64(), isn't it?

Do you want me to send a new patch for that part only, or will you just
remove the sparc32 part?

Thanks!

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH -next] sparc32/sparc64: Provide cmpxchg64()
  2013-03-20  8:05   ` Geert Uytterhoeven
@ 2013-03-20 14:11     ` David Miller
  2013-03-20 14:35       ` Geert Uytterhoeven
  0 siblings, 1 reply; 5+ messages in thread
From: David Miller @ 2013-03-20 14:11 UTC (permalink / raw)
  To: geert; +Cc: sparclinux, linux-next

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: Wed, 20 Mar 2013 09:05:19 +0100

> The sparc64 part is still OK as it eventually calls __cmpxchg_u64(),
> isn't it?

Yes, that part is OK.

> Do you want me to send a new patch for that part only, or will you just
> remove the sparc32 part?

Please send a new patch, thank you.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH -next] sparc32/sparc64: Provide cmpxchg64()
  2013-03-20 14:11     ` David Miller
@ 2013-03-20 14:35       ` Geert Uytterhoeven
  0 siblings, 0 replies; 5+ messages in thread
From: Geert Uytterhoeven @ 2013-03-20 14:35 UTC (permalink / raw)
  To: David Miller; +Cc: sparclinux, linux-next

On Wed, Mar 20, 2013 at 3:11 PM, David Miller <davem@davemloft.net> wrote:
> From: Geert Uytterhoeven <geert@linux-m68k.org>
> Date: Wed, 20 Mar 2013 09:05:19 +0100
>
>> The sparc64 part is still OK as it eventually calls __cmpxchg_u64(),
>> isn't it?
>
> Yes, that part is OK.
>
>> Do you want me to send a new patch for that part only, or will you just
>> remove the sparc32 part?
>
> Please send a new patch, thank you.

OK, done.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-03-20 14:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-14 19:42 [PATCH -next] sparc32/sparc64: Provide cmpxchg64() Geert Uytterhoeven
2013-03-19 20:20 ` David Miller
2013-03-20  8:05   ` Geert Uytterhoeven
2013-03-20 14:11     ` David Miller
2013-03-20 14:35       ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).