mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Waiman Long <waiman.long@hp.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Arnd Bergmann <arnd@arndb.de>,
	linux-arch@vger.kernel.org, x86@kernel.org,
	linux-kernel@vger.kernel.org,
	Steven Rostedt <rostedt@goodmis.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Michel Lespinasse <walken@google.com>,
	Andi Kleen <andi@firstfloor.org>, Rik van Riel <riel@redhat.com>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
	George Spelvin <linux@horizon.com>,
	Tim Chen <tim.c.chen@linux.intel.com>,
	Daniel J Blueman <daniel@numascale.com>,
	Alexander Fyodorov <halcy@yandex.ru>,
	Aswin Chandramouleeswaran <aswin@hp.com>,
	Scott J Norton <scott.norton@hp.com>,
	Thavatchai Makphaibulchoke <thavatchai.makpahibulchoke@hp.com>
Subject: Re: [PATCH v4 1/3] qspinlock: Introducing a 4-byte queue spinlock implementation
Date: Tue, 18 Feb 2014 22:37:48 +0100	[thread overview]
Message-ID: <20140218213748.GT14089@laptop.programming.kicks-ass.net> (raw)
In-Reply-To: <5303B6F3.9090001@hp.com>

On Tue, Feb 18, 2014 at 02:39:31PM -0500, Waiman Long wrote:
> >>+	/*
> >>+	 * At the head of the wait queue now
> >>+	 */
> >>+	while (true) {
> >>+		u32 qcode;
> >>+		int retval;
> >>+
> >>+		retval = queue_get_lock_qcode(lock,&qcode, my_qcode);
> >>+		if (retval>  0)
> >>+			;	/* Lock not available yet */
> >>+		else if (retval<  0)
> >>+			/* Lock taken, can release the node&  return */
> >>+			goto release_node;
> >>+		else if (qcode != my_qcode) {
> >>+			/*
> >>+			 * Just get the lock with other spinners waiting
> >>+			 * in the queue.
> >>+			 */
> >>+			if (queue_spin_trylock_unfair(lock))
> >>+				goto notify_next;
> >Why is this an option at all?
> >
> >
> 
> Are you referring to the case (qcode != my_qcode)? This condition will be
> true if more than one tasks have queued up.

But in no case should we revert to unfair spinning or stealing. We
should always respect the queueing order.

If the lock tail no longer points to us, then there's further waiters
and we should wait for ->next and unlock it -- after we've taken the
lock.


  parent reply	other threads:[~2014-02-18 21:38 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-17 20:41 [PATCH v4 0/3] qspinlock: Introducing a 4-byte queue spinlock Waiman Long
2014-02-17 20:41 ` [PATCH v4 1/3] qspinlock: Introducing a 4-byte queue spinlock implementation Waiman Long
2014-02-17 22:45   ` [tip:x86/spinlocks] " tip-bot for Waiman Long
2014-02-18  7:30   ` [PATCH v4 1/3] " Peter Zijlstra
2014-02-18 19:29     ` Waiman Long
2014-02-18  7:33   ` Peter Zijlstra
2014-02-18 19:31     ` Waiman Long
2014-02-18  7:39   ` Peter Zijlstra
2014-02-18 19:39     ` Waiman Long
2014-02-18 21:34       ` Peter Zijlstra
2014-02-19  0:50         ` Waiman Long
2014-02-19  8:52           ` Peter Zijlstra
2014-02-19 19:26             ` Waiman Long
2014-02-18 21:37       ` Peter Zijlstra [this message]
2014-02-19  0:58         ` Waiman Long
2014-02-19  8:55           ` Peter Zijlstra
2014-02-19 19:30             ` Waiman Long
2014-02-17 20:41 ` [PATCH v4 2/3] qspinlock, x86: Enable x86-64 to use queue spinlock Waiman Long
2014-02-17 22:46   ` [tip:x86/spinlocks] " tip-bot for Waiman Long
2014-02-17 20:41 ` [PATCH v4 3/3] qspinlock, x86: Add x86 specific optimization for 2 contending tasks Waiman Long
2014-02-17 22:46   ` [tip:x86/spinlocks] " tip-bot for Waiman Long
2014-02-21 12:12   ` [PATCH v4 3/3] " Peter Zijlstra
2014-02-21 17:08     ` Waiman Long
2014-02-21 17:09       ` Waiman Long
2014-02-21 17:26         ` Peter Zijlstra
2014-02-22  1:36           ` Waiman Long
2014-02-21 17:28   ` Peter Zijlstra
2014-02-22  1:39     ` Waiman Long
2014-02-17 22:47 ` [PATCH v4 0/3] qspinlock: Introducing a 4-byte queue spinlock H. Peter Anvin
2014-02-18  7:31   ` Peter Zijlstra
2014-02-18  7:39     ` H. Peter Anvin
2014-02-18 19:30     ` Waiman Long
2014-02-18 21:28       ` Peter Zijlstra
2014-02-19  0:42         ` Waiman Long
2014-02-19  7:09           ` Raghavendra K T
2014-02-19  8:51           ` Peter Zijlstra
2014-02-19 19:24             ` Waiman Long
2014-02-19 19:48               ` Peter Zijlstra
2014-02-20 17:37                 ` Waiman Long
2014-02-20 17:44                   ` Linus Torvalds
2014-02-20 18:15                   ` Peter Zijlstra
2014-02-19 20:17               ` Linus Torvalds
2014-02-20 17:54                 ` Waiman Long
2014-02-20 18:42                   ` Linus Torvalds
2014-02-20 19:21                     ` Waiman Long
2014-02-20 19:32                   ` Raghavendra K T
2014-02-21 17:02                     ` Waiman Long
2014-02-21 17:05                       ` Linus Torvalds
2014-02-19 21:29               ` H. Peter Anvin
2014-02-18  7:38   ` Peter Zijlstra
2014-02-22 16:56     ` Ingo Molnar
2014-02-25  3:37       ` Waiman Long
2014-02-18 19:27   ` Waiman Long

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=20140218213748.GT14089@laptop.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=arnd@arndb.de \
    --cc=aswin@hp.com \
    --cc=daniel@numascale.com \
    --cc=halcy@yandex.ru \
    --cc=hpa@zytor.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@horizon.com \
    --cc=mingo@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=raghavendra.kt@linux.vnet.ibm.com \
    --cc=riel@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=scott.norton@hp.com \
    --cc=tglx@linutronix.de \
    --cc=thavatchai.makpahibulchoke@hp.com \
    --cc=tim.c.chen@linux.intel.com \
    --cc=torvalds@linux-foundation.org \
    --cc=waiman.long@hp.com \
    --cc=walken@google.com \
    --cc=x86@kernel.org \
    /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

Powered by JetHome