Re: [RFC PATCH-tip v2 1/6] locking/osq: Make lock/unlock proper acquire/release barrier
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: Davidlohr Bueso <dave@xxxxxxxxxxxx>
- Subject: Re: [RFC PATCH-tip v2 1/6] locking/osq: Make lock/unlock proper acquire/release barrier
- From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
- Date: Wed, 15 Jun 2016 19:12:50 +0200
- Cc: Waiman Long <Waiman.Long@xxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, x86@xxxxxxxxxx, linux-alpha@xxxxxxxxxxxxxxx, linux-ia64@xxxxxxxxxxxxxxx, linux-s390@xxxxxxxxxxxxxxx, linux-arch@xxxxxxxxxxxxxxx, Jason Low <jason.low2@xxxxxx>, Dave Chinner <david@xxxxxxxxxxxxx>, Scott J Norton <scott.norton@xxxxxxx>, Douglas Hatch <doug.hatch@xxxxxxx>
- In-reply-to: <20160615165659.GC2094@linux-80c1.suse>
- List-id: <linux-ia64.vger.kernel.org>
- References: <1465944489-43440-1-git-send-email-Waiman.Long@hpe.com> <1465944489-43440-2-git-send-email-Waiman.Long@hpe.com> <20160615165659.GC2094@linux-80c1.suse>
- User-agent: Mutt/1.5.23.1 (2014-03-12)
On Wed, Jun 15, 2016 at 09:56:59AM -0700, Davidlohr Bueso wrote:
> On Tue, 14 Jun 2016, Waiman Long wrote:
> >+++ b/kernel/locking/osq_lock.c
> >@@ -115,7 +115,7 @@ bool osq_lock(struct optimistic_spin_queue *lock)
> > * cmpxchg in an attempt to undo our queueing.
> > */
> >
> >- while (!READ_ONCE(node->locked)) {
> >+ while (!smp_load_acquire(&node->locked)) {
>
> Hmm this being a polling path, that barrier can get pretty expensive and
> last I checked it was unnecessary:
I think he'll go rely on it later on.
In any case, its fairly simple to cure, just add
smp_acquire__after_ctrl_dep() at the end. If we bail because
need_resched() we don't need the acquire I think.
--
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Index of Archives]
[Linux Kernel]
[Sparc Linux]
[DCCP]
[Linux ARM]
[Yosemite News]
[Linux SCSI]
[Linux x86_64]
[Linux for Ham Radio]