All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Deacon <will.deacon@arm.com>
To: mattst88@gmail.com, rth@twiddle.net, tglx@linutronix.de,
	hpa@zytor.com, stern@rowland.harvard.edu, parri.andrea@gmail.com,
	ink@jurassic.park.msu.ru, akpm@linux-foundation.org,
	paulmck@linux.vnet.ibm.com, torvalds@linux-foundation.org,
	linux-kernel@vger.kernel.org, peterz@infradead.org,
	mingo@kernel.org
Cc: linux-tip-commits@vger.kernel.org
Subject: Re: [tip:locking/urgent] locking/xchg/alpha: Clean up barrier usage by using smp_mb() in place of __ASM__MB
Date: Mon, 26 Feb 2018 18:05:52 +0000	[thread overview]
Message-ID: <20180226180551.GM26147@arm.com> (raw)
In-Reply-To: <tip-79d442461df7478cdd0c50d9b8a76f431f150fa3@git.kernel.org>

Hi Andrea,

I know this is in mainline now, but I think the way you've got the barriers
here:

On Fri, Feb 23, 2018 at 12:27:54AM -0800, tip-bot for Andrea Parri wrote:
> diff --git a/arch/alpha/include/asm/cmpxchg.h b/arch/alpha/include/asm/cmpxchg.h
> index 46ebf14aed4e..8a2b331e43fe 100644
> --- a/arch/alpha/include/asm/cmpxchg.h
> +++ b/arch/alpha/include/asm/cmpxchg.h
> @@ -6,7 +6,6 @@
>   * Atomic exchange routines.
>   */
>  
> -#define __ASM__MB
>  #define ____xchg(type, args...)		__xchg ## type ## _local(args)
>  #define ____cmpxchg(type, args...)	__cmpxchg ## type ## _local(args)
>  #include <asm/xchg.h>
> @@ -33,10 +32,6 @@
>  	cmpxchg_local((ptr), (o), (n));					\
>  })
>  
> -#ifdef CONFIG_SMP
> -#undef __ASM__MB
> -#define __ASM__MB	"\tmb\n"
> -#endif
>  #undef ____xchg
>  #undef ____cmpxchg
>  #define ____xchg(type, args...)		__xchg ##type(args)
> @@ -64,7 +59,6 @@
>  	cmpxchg((ptr), (o), (n));					\
>  })
>  
> -#undef __ASM__MB
>  #undef ____cmpxchg
>  
>  #endif /* _ALPHA_CMPXCHG_H */
> diff --git a/arch/alpha/include/asm/xchg.h b/arch/alpha/include/asm/xchg.h
> index e2660866ce97..e1facf6fc244 100644
> --- a/arch/alpha/include/asm/xchg.h
> +++ b/arch/alpha/include/asm/xchg.h
> @@ -28,12 +28,12 @@ ____xchg(_u8, volatile char *m, unsigned long val)
>  	"	or	%1,%2,%2\n"
>  	"	stq_c	%2,0(%3)\n"
>  	"	beq	%2,2f\n"
> -		__ASM__MB
>  	".subsection 2\n"
>  	"2:	br	1b\n"
>  	".previous"
>  	: "=&r" (ret), "=&r" (val), "=&r" (tmp), "=&r" (addr64)
>  	: "r" ((long)m), "1" (val) : "memory");
> +	smp_mb();
>  
>  	return ret;

ends up adding unnecessary barriers to the _local variants, which the
previous code took care to avoid. That's why I suggesting adding
the smp_mb() into the cmpxchg macro rather than the ____cmpxchg variants.

I think it's worth spinning another patch to fix this properly.

Will

      reply	other threads:[~2018-02-26 18:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-22  9:24 [PATCH 1/2] locking/xchg/alpha: Use smp_mb() in place of __ASM__MB Andrea Parri
2018-02-22 21:46 ` Paul E. McKenney
2018-02-23  8:27 ` [tip:locking/urgent] locking/xchg/alpha: Clean up barrier usage by using " tip-bot for Andrea Parri
2018-02-26 18:05   ` Will Deacon [this message]

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=20180226180551.GM26147@arm.com \
    --to=will.deacon@arm.com \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=ink@jurassic.park.msu.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mattst88@gmail.com \
    --cc=mingo@kernel.org \
    --cc=parri.andrea@gmail.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rth@twiddle.net \
    --cc=stern@rowland.harvard.edu \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.