linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@kernel.org, laijs@cn.fujitsu.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, niv@us.ibm.com, tglx@linutronix.de,
	peterz@infradead.org, rostedt@goodmis.org, dhowells@redhat.com,
	edumazet@google.com, darren@dvhart.com, fweisbec@gmail.com,
	sbw@mit.edu, "Michael S. Tsirkin" <mst@redhat.com>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: [PATCH tip/core/rcu 12/16] srcu: Add API for barrier after srcu_read_unlock()
Date: Fri, 15 Nov 2013 16:23:34 -0800	[thread overview]
Message-ID: <1384561418-30575-12-git-send-email-paulmck@linux.vnet.ibm.com> (raw)
In-Reply-To: <1384561418-30575-1-git-send-email-paulmck@linux.vnet.ibm.com>

From: "Michael S. Tsirkin" <mst@redhat.com>

The srcu_read_unlock() implementation currently contains a full memory
barrier, but that has not always been the case and it someday again might
not be the case.  However, given that the memory barrier is there, it is
useful to be able to rely on it.  This commit therefore adds a new
smp_mb__after_srcu_read_unlock() API that, together with a preceding
srcu_read_unlock(), is guaranteed to provide a full barrier.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: "Lai Jiangshan" <laijs@cn.fujitsu.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 include/linux/srcu.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/include/linux/srcu.h b/include/linux/srcu.h
index c114614ed172..9b058eecd403 100644
--- a/include/linux/srcu.h
+++ b/include/linux/srcu.h
@@ -237,4 +237,18 @@ static inline void srcu_read_unlock(struct srcu_struct *sp, int idx)
 	__srcu_read_unlock(sp, idx);
 }
 
+/**
+ * smp_mb__after_srcu_read_unlock - ensure full ordering after srcu_read_unlock
+ *
+ * Converts the preceding srcu_read_unlock into a two-way memory barrier.
+ *
+ * Call this after srcu_read_unlock, to guarantee that all memory operations
+ * that occur after smp_mb__after_srcu_read_unlock will appear to happen after
+ * the preceding srcu_read_unlock.
+ */
+static inline void smp_mb__after_srcu_read_unlock(void)
+{
+	/* __srcu_read_unlock has smp_mb() internally so nothing to do here. */
+}
+
 #endif
-- 
1.8.1.5


  parent reply	other threads:[~2013-11-16  0:24 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-16  0:23 [PATCH tip/core/rcu 0/16] Fixes for 3.14 Paul E. McKenney
2013-11-16  0:23 ` [PATCH tip/core/rcu 01/16] rcu: Kick CPU halfway to RCU CPU stall warning Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 02/16] rcu: Fix and comment ordering around wait_event() Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 03/16] rcu: Break call_rcu() deadlock involving scheduler and perf Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 04/16] rcu: Allow task-level idle entry/exit nesting Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 05/16] rcu: Fix srcu_barrier() docbook header Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 06/16] rcu: Let the world know when RCU adjusts its geometry Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 07/16] rcu: Fix coccinelle warnings Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 08/16] rcu: Fix CONFIG_RCU_FANOUT_EXACT for odd fanout/leaf values Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 09/16] rcu: Improve SRCU's grace-period comments Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 10/16] rcu: Provide better diagnostics for blocking in RCU callback functions Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 11/16] rcu: Warn on allegedly impossible rcu_read_unlock_special() from irq Paul E. McKenney
2013-11-16  0:23   ` Paul E. McKenney [this message]
2013-11-16  0:23   ` [PATCH tip/core/rcu 13/16] rcu: Don't activate RCU core on NO_HZ_FULL CPUs Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 14/16] rcu/torture: Dynamically allocate SRCU output buffer to avoid overflow Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 15/16] rcu: Remove "extern" from function declarations in include/linux/*rcu*.h Paul E. McKenney
2013-11-16  0:23   ` [PATCH tip/core/rcu 16/16] rcu: Remove "extern" from function declarations in kernel/rcu/rcu.h Paul E. McKenney

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=1384561418-30575-12-git-send-email-paulmck@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=darren@dvhart.com \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=mst@redhat.com \
    --cc=niv@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sbw@mit.edu \
    --cc=tglx@linutronix.de \
    /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 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).