Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1228860

[PATCH 5/5] locking/mcs: Relax to atomic/release semantics

From Davidlohr Bueso <dave@stgolabs.net>
Newsgroups linux.kernel
Subject [PATCH 5/5] locking/mcs: Relax to atomic/release semantics
Date 2015-09-20 12:20 +0200
Message-ID <qaJSW-5lZ-17@gated-at.bofh.it> (permalink)
References <qaJSW-5lZ-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


... by using acquire semantics where appropriate As such, weakly
ordered archs can benefit from more relaxed use of barriers when
issuing atomics.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
---
 kernel/locking/mcs_spinlock.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/locking/mcs_spinlock.h b/kernel/locking/mcs_spinlock.h
index fd91aaa..5b9102a 100644
--- a/kernel/locking/mcs_spinlock.h
+++ b/kernel/locking/mcs_spinlock.h
@@ -67,7 +67,7 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
 	node->locked = 0;
 	node->next   = NULL;
 
-	prev = xchg(lock, node);
+	prev = xchg_acquire(lock, node);
 	if (likely(prev == NULL)) {
 		/*
 		 * Lock acquired, don't need to set node->locked to 1. Threads
@@ -98,7 +98,7 @@ void mcs_spin_unlock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
 		/*
 		 * Release the lock by setting it to NULL
 		 */
-		if (likely(cmpxchg(lock, node, NULL) == node))
+		if (likely(cmpxchg_release(lock, node, NULL) == node))
 			return;
 		/* Wait until the next pointer is set */
 		while (!(next = READ_ONCE(node->next)))
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/5] locking: Adopt relaxed barrier semantics Davidlohr Bueso <dave@stgolabs.net> - 2015-09-20 12:20 +0200
  [PATCH 2/5] locking/mutex: Relax to atomic/release semantics Davidlohr Bueso <dave@stgolabs.net> - 2015-09-20 12:20 +0200
    Re: [PATCH 2/5] locking/mutex: Relax to atomic/release semantics Linus Torvalds <torvalds@linux-foundation.org> - 2015-09-20 20:30 +0200
      Re: [PATCH 2/5] locking/mutex: Relax to atomic/release semantics Davidlohr Bueso <dave@stgolabs.net> - 2015-09-20 20:50 +0200
  [PATCH 5/5] locking/mcs: Relax to atomic/release semantics Davidlohr Bueso <dave@stgolabs.net> - 2015-09-20 12:20 +0200
    Re: [PATCH 5/5] locking/mcs: Relax to atomic/release semantics Linus Torvalds <torvalds@linux-foundation.org> - 2015-09-20 20:30 +0200
  [PATCH 1/5] asm-generic: Add _{relaxed|acquire|release}() variants for inc/dec atomics Davidlohr Bueso <dave@stgolabs.net> - 2015-09-20 12:20 +0200
  [PATCH 3/5] locking/rtmutex: Relax to acquire/release semantics Davidlohr Bueso <dave@stgolabs.net> - 2015-09-20 12:20 +0200

csiph-web