diff for duplicates of <57F5181F.60202@hpe.com> diff --git a/a/1.txt b/N1/1.txt index dcca812..a526e41 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -134,9 +134,9 @@ osq_node); +static __always_inline int +_atomic_cmpxchg_(const enum mbtype barrier, atomic_t *v, int old, int new) +{ -+ if (barrier == acquire) ++ if (barrier = acquire) + return atomic_cmpxchg_acquire(v, old, new); -+ else if (barrier == release) ++ else if (barrier = release) + return atomic_cmpxchg_release(v, old, new); + else + return atomic_cmpxchg_relaxed(v, old, new); @@ -159,9 +159,9 @@ osq_node); @@ -50,7 +68,7 @@ osq_wait_next(struct optimistic_spin_queue *lock, for (;;) { - if (atomic_read(&lock->tail) == curr && -- atomic_cmpxchg_acquire(&lock->tail, curr, old) == curr) { -+ _atomic_cmpxchg_(barrier, &lock->tail, curr, old) == curr) { + if (atomic_read(&lock->tail) = curr && +- atomic_cmpxchg_acquire(&lock->tail, curr, old) = curr) { ++ _atomic_cmpxchg_(barrier, &lock->tail, curr, old) = curr) { /* * We were the last queued, we moved @lock back. @prev * will now observe @lock and will complete its @@ -170,9 +170,9 @@ osq_node); */ if (node->next) { - next = xchg(&node->next, NULL); -+ if (barrier == acquire) ++ if (barrier = acquire) + next = xchg_acquire(&node->next, NULL); -+ else if (barrier == release) ++ else if (barrier = release) + next = xchg_release(&node->next, NULL); + else + next = xchg_relaxed(&node->next, NULL); @@ -202,7 +202,7 @@ fails. + * Add an acquire memory barrier, if necessary, for pairing with the + * release barrier in unlock. + */ -+ if (barrier == acquire) ++ if (barrier = acquire) + smp_acquire__after_ctrl_dep(); return true; @@ -210,9 +210,9 @@ fails. @@ -137,7 +171,7 @@ unqueue: for (;;) { - if (prev->next == node && -- cmpxchg(&prev->next, node, NULL) == node) -+ cmpxchg_relaxed(&prev->next, node, NULL) == node) + if (prev->next = node && +- cmpxchg(&prev->next, node, NULL) = node) ++ cmpxchg_relaxed(&prev->next, node, NULL) = node) break; /* @@ -240,9 +240,9 @@ fails. * Fast path for the uncontended case. */ - if (likely(atomic_cmpxchg_release(&lock->tail, curr, -- OSQ_UNLOCKED_VAL) == curr)) +- OSQ_UNLOCKED_VAL) = curr)) + if (likely(_atomic_cmpxchg_(barrier, &lock->tail, curr, -+ OSQ_UNLOCKED_VAL) == curr)) ++ OSQ_UNLOCKED_VAL) = curr)) return; /* @@ -264,7 +264,7 @@ fails. - next = osq_wait_next(lock, node, NULL); - if (next) +unlock: -+ if (barrier == release) ++ if (barrier = release) + smp_store_release(&next->locked, 1); + else WRITE_ONCE(next->locked, 1); diff --git a/a/content_digest b/N1/content_digest index c11441c..1afc3c0 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -4,7 +4,7 @@ "ref\057F4EFCA.6050503@hpe.com\0" "From\0Waiman Long <waiman.long@hpe.com>\0" "Subject\0Re: [RFC PATCH-tip v4 01/10] locking/osq: Make lock/unlock proper acquire/release barrier\0" - "Date\0Wed, 5 Oct 2016 11:11:27 -0400\0" + "Date\0Wed, 05 Oct 2016 15:11:27 +0000\0" "To\0Davidlohr Bueso <dave@stgolabs.net>\0" "Cc\0Peter Zijlstra <peterz@infradead.org>" Ingo Molnar <mingo@redhat.com> @@ -158,9 +158,9 @@ "+static __always_inline int\n" "+_atomic_cmpxchg_(const enum mbtype barrier, atomic_t *v, int old, int new)\n" "+{\n" - "+ if (barrier == acquire)\n" + "+ if (barrier = acquire)\n" "+ return atomic_cmpxchg_acquire(v, old, new);\n" - "+ else if (barrier == release)\n" + "+ else if (barrier = release)\n" "+ return atomic_cmpxchg_release(v, old, new);\n" "+ else\n" "+ return atomic_cmpxchg_relaxed(v, old, new);\n" @@ -183,9 +183,9 @@ "@@ -50,7 +68,7 @@ osq_wait_next(struct optimistic_spin_queue *lock,\n" "\n" " for (;;) {\n" - " if (atomic_read(&lock->tail) == curr &&\n" - "- atomic_cmpxchg_acquire(&lock->tail, curr, old) == curr) {\n" - "+ _atomic_cmpxchg_(barrier, &lock->tail, curr, old) == curr) {\n" + " if (atomic_read(&lock->tail) = curr &&\n" + "- atomic_cmpxchg_acquire(&lock->tail, curr, old) = curr) {\n" + "+ _atomic_cmpxchg_(barrier, &lock->tail, curr, old) = curr) {\n" " /*\n" " * We were the last queued, we moved @lock back. @prev\n" " * will now observe @lock and will complete its\n" @@ -194,9 +194,9 @@ " */\n" " if (node->next) {\n" "- next = xchg(&node->next, NULL);\n" - "+ if (barrier == acquire)\n" + "+ if (barrier = acquire)\n" "+ next = xchg_acquire(&node->next, NULL);\n" - "+ else if (barrier == release)\n" + "+ else if (barrier = release)\n" "+ next = xchg_release(&node->next, NULL);\n" "+ else\n" "+ next = xchg_relaxed(&node->next, NULL);\n" @@ -226,7 +226,7 @@ "+ * Add an acquire memory barrier, if necessary, for pairing with the\n" "+ * release barrier in unlock.\n" "+ */\n" - "+ if (barrier == acquire)\n" + "+ if (barrier = acquire)\n" "+ smp_acquire__after_ctrl_dep();\n" " return true;\n" "\n" @@ -234,9 +234,9 @@ "@@ -137,7 +171,7 @@ unqueue:\n" "\n" " for (;;) {\n" - " if (prev->next == node &&\n" - "- cmpxchg(&prev->next, node, NULL) == node)\n" - "+ cmpxchg_relaxed(&prev->next, node, NULL) == node)\n" + " if (prev->next = node &&\n" + "- cmpxchg(&prev->next, node, NULL) = node)\n" + "+ cmpxchg_relaxed(&prev->next, node, NULL) = node)\n" " break;\n" "\n" " /*\n" @@ -264,9 +264,9 @@ " * Fast path for the uncontended case.\n" " */\n" "- if (likely(atomic_cmpxchg_release(&lock->tail, curr,\n" - "- OSQ_UNLOCKED_VAL) == curr))\n" + "- OSQ_UNLOCKED_VAL) = curr))\n" "+ if (likely(_atomic_cmpxchg_(barrier, &lock->tail, curr,\n" - "+ OSQ_UNLOCKED_VAL) == curr))\n" + "+ OSQ_UNLOCKED_VAL) = curr))\n" " return;\n" "\n" " /*\n" @@ -288,7 +288,7 @@ "- next = osq_wait_next(lock, node, NULL);\n" "- if (next)\n" "+unlock:\n" - "+ if (barrier == release)\n" + "+ if (barrier = release)\n" "+ smp_store_release(&next->locked, 1);\n" "+ else\n" " WRITE_ONCE(next->locked, 1);\n" @@ -340,4 +340,4 @@ "-- \n" 1.7.1 -b956cf42b30825096f8691b4631d157d71edb7f4b18adeb78e8ff3cb8f465e87 +3676cff44359b75a6ab94571154eeb8ddcce0f1503cf314cd794a54b2e259c8a
diff --git a/a/content_digest b/N2/content_digest index c11441c..f407098 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -8,13 +8,13 @@ "To\0Davidlohr Bueso <dave@stgolabs.net>\0" "Cc\0Peter Zijlstra <peterz@infradead.org>" Ingo Molnar <mingo@redhat.com> - linux-kernel@vger.kernel.org - x86@kernel.org - linux-alpha@vger.kernel.org - linux-ia64@vger.kernel.org - linux-s390@vger.kernel.org - linux-arch@vger.kernel.org - linux-doc@vger.kernel.org + <linux-kernel@vger.kernel.org> + <x86@kernel.org> + <linux-alpha@vger.kernel.org> + <linux-ia64@vger.kernel.org> + <linux-s390@vger.kernel.org> + <linux-arch@vger.kernel.org> + <linux-doc@vger.kernel.org> Jason Low <jason.low2@hp.com> Dave Chinner <david@fromorbit.com> Jonathan Corbet <corbet@lwn.net> @@ -340,4 +340,4 @@ "-- \n" 1.7.1 -b956cf42b30825096f8691b4631d157d71edb7f4b18adeb78e8ff3cb8f465e87 +f9835f2d67d7cc78a665cbdd2b22628d18dc0aa7fb1a5f54289354b8f576c6ca
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.