From: Peter Zijlstra <peterz@infradead.org>
To: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>
Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
virtualization@lists.linux-foundation.org,
benh@kernel.crashing.org, paulus@samba.org, mpe@ellerman.id.au,
mingo@redhat.com, paulmck@linux.vnet.ibm.com, jeremy@goop.org,
chrisw@sous-sol.org, akataria@vmware.com, rusty@rustcorp.com.au
Subject: Re: [PATCH v3 5/6] pv-qspinlock: use cmpxchg_release in __pv_queued_spin_unlock
Date: Thu, 26 May 2016 18:47:29 +0200 [thread overview]
Message-ID: <20160526164729.GL3206@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <1464164289-6124-6-git-send-email-xinhui.pan@linux.vnet.ibm.com>
On Wed, May 25, 2016 at 04:18:08PM +0800, Pan Xinhui wrote:
> cmpxchg_release is light-wight than cmpxchg, we can gain a better
> performace then. On some arch like ppc, barrier impact the performace
> too much.
>
> Suggested-by: Boqun Feng <boqun.feng@gmail.com>
> Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>
> ---
> kernel/locking/qspinlock_paravirt.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/locking/qspinlock_paravirt.h b/kernel/locking/qspinlock_paravirt.h
> index a5b1248..2bbffe4 100644
> --- a/kernel/locking/qspinlock_paravirt.h
> +++ b/kernel/locking/qspinlock_paravirt.h
> @@ -614,7 +614,7 @@ __visible void __pv_queued_spin_unlock(struct qspinlock *lock)
> * unhash. Otherwise it would be possible to have multiple @lock
> * entries, which would be BAD.
> */
> - locked = cmpxchg(&l->locked, _Q_LOCKED_VAL, 0);
> + locked = cmpxchg_release(&l->locked, _Q_LOCKED_VAL, 0);
> if (likely(locked == _Q_LOCKED_VAL))
> return;
This patch fails to explain _why_ it can be relaxed.
And seeing how this cmpxchg() can actually unlock the lock, I don't see
how this can possibly be correct. Maybe cmpxchg_release(), but relaxed
seems very wrong.
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>
Cc: jeremy@goop.org, mpe@ellerman.id.au,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org, chrisw@sous-sol.org,
mingo@redhat.com, paulus@samba.org, benh@kernel.crashing.org,
akataria@vmware.com, paulmck@linux.vnet.ibm.com,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v3 5/6] pv-qspinlock: use cmpxchg_release in __pv_queued_spin_unlock
Date: Thu, 26 May 2016 18:47:29 +0200 [thread overview]
Message-ID: <20160526164729.GL3206@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <1464164289-6124-6-git-send-email-xinhui.pan@linux.vnet.ibm.com>
On Wed, May 25, 2016 at 04:18:08PM +0800, Pan Xinhui wrote:
> cmpxchg_release is light-wight than cmpxchg, we can gain a better
> performace then. On some arch like ppc, barrier impact the performace
> too much.
>
> Suggested-by: Boqun Feng <boqun.feng@gmail.com>
> Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>
> ---
> kernel/locking/qspinlock_paravirt.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/locking/qspinlock_paravirt.h b/kernel/locking/qspinlock_paravirt.h
> index a5b1248..2bbffe4 100644
> --- a/kernel/locking/qspinlock_paravirt.h
> +++ b/kernel/locking/qspinlock_paravirt.h
> @@ -614,7 +614,7 @@ __visible void __pv_queued_spin_unlock(struct qspinlock *lock)
> * unhash. Otherwise it would be possible to have multiple @lock
> * entries, which would be BAD.
> */
> - locked = cmpxchg(&l->locked, _Q_LOCKED_VAL, 0);
> + locked = cmpxchg_release(&l->locked, _Q_LOCKED_VAL, 0);
> if (likely(locked == _Q_LOCKED_VAL))
> return;
This patch fails to explain _why_ it can be relaxed.
And seeing how this cmpxchg() can actually unlock the lock, I don't see
how this can possibly be correct. Maybe cmpxchg_release(), but relaxed
seems very wrong.
next prev parent reply other threads:[~2016-05-26 16:47 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-25 8:18 [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention Pan Xinhui
2016-05-25 8:18 ` Pan Xinhui
2016-05-25 8:18 ` Pan Xinhui
2016-05-25 8:18 ` [PATCH v3 1/6] qspinlock: powerpc support qspinlock Pan Xinhui
2016-05-25 8:18 ` Pan Xinhui
2016-05-25 8:18 ` [PATCH v3 2/6] powerpc: pseries/Kconfig: Add qspinlock build config Pan Xinhui
2016-05-25 8:18 ` Pan Xinhui
2016-05-25 8:18 ` [PATCH v3 3/6] powerpc: lib/locks.c: Add cpu yield/wake helper function Pan Xinhui
2016-05-25 8:18 ` Pan Xinhui
2016-05-25 8:18 ` [PATCH v3 4/6] pv-qspinlock: powerpc support pv-qspinlock Pan Xinhui
2016-05-25 8:18 ` Pan Xinhui
2016-05-25 8:18 ` [PATCH v3 5/6] pv-qspinlock: use cmpxchg_release in __pv_queued_spin_unlock Pan Xinhui
2016-05-26 16:47 ` Peter Zijlstra [this message]
2016-05-26 16:47 ` Peter Zijlstra
2016-05-26 16:57 ` Peter Zijlstra
2016-05-26 16:57 ` Peter Zijlstra
2016-05-27 10:34 ` xinhui
2016-05-27 10:34 ` xinhui
2016-05-27 10:34 ` xinhui
2016-05-25 8:18 ` Pan Xinhui
2016-05-25 8:18 ` [PATCH v3 6/6] powerpc: pseries: Add pv-qspinlock build config/make Pan Xinhui
2016-05-25 8:18 ` Pan Xinhui
2016-05-26 16:50 ` [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention Peter Zijlstra
2016-05-26 16:50 ` Peter Zijlstra
2016-05-26 16:50 ` Peter Zijlstra
2016-05-27 10:52 ` xinhui
2016-05-27 10:52 ` xinhui
2016-05-27 10:52 ` xinhui
2016-05-26 16:54 ` Peter Zijlstra
2016-05-26 16:54 ` Peter Zijlstra
2016-05-26 16:54 ` Peter Zijlstra
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=20160526164729.GL3206@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=akataria@vmware.com \
--cc=benh@kernel.crashing.org \
--cc=chrisw@sous-sol.org \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=paulmck@linux.vnet.ibm.com \
--cc=paulus@samba.org \
--cc=rusty@rustcorp.com.au \
--cc=virtualization@lists.linux-foundation.org \
--cc=xinhui.pan@linux.vnet.ibm.com \
/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.