From: Peter Zijlstra <peterz@infradead.org>
To: Waiman Long <longman@redhat.com>
Cc: Will Deacon <will.deacon@arm.com>, Ingo Molnar <mingo@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
x86@kernel.org, Zhenzhong Duan <zhenzhong.duan@oracle.com>,
James Morse <james.morse@arm.com>,
SRINIVAS <srinivas.eeda@oracle.com>
Subject: Re: [PATCH v2 1/4] locking/qspinlock: Handle > 4 slowpath nesting levels
Date: Wed, 23 Jan 2019 21:40:38 +0100 [thread overview]
Message-ID: <20190123204038.GL13777@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <63131030-bd24-34bf-10dc-b5e7c7c177be@redhat.com>
On Wed, Jan 23, 2019 at 03:11:19PM -0500, Waiman Long wrote:
> On 01/23/2019 04:34 AM, Will Deacon wrote:
> > On Tue, Jan 22, 2019 at 10:49:08PM -0500, Waiman Long wrote:
> >> @@ -412,6 +412,21 @@ void queued_spin_lock_slowpath(struct qspinlock *lock, u32 val)
> >> idx = node->count++;
> >> tail = encode_tail(smp_processor_id(), idx);
> >> + if (unlikely(idx >= MAX_NODES)) {
> >> + while (!queued_spin_trylock(lock))
> >> + cpu_relax();
> >> + goto release;
> >> + }
> So the additional code checks the idx value and branch to the end of the
> function when the condition is true. There isn't too much overhead here.
So something horrible we could do (and I'm not at all advocating we do
this), is invert node->count. That is, start at 3 and decrement and
detect sign flips.
That avoids the additional compare. It would require we change the
structure layout though, otherwise we keep hitting that second line by
default, which would suck.
next prev parent reply other threads:[~2019-01-23 20:40 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-23 3:49 [PATCH v2 0/4] locking/qspinlock: Handle > 4 nesting levels Waiman Long
2019-01-23 3:49 ` Waiman Long
2019-01-23 3:49 ` [PATCH v2 1/4] locking/qspinlock: Handle > 4 slowpath " Waiman Long
2019-01-23 3:49 ` Waiman Long
2019-01-23 9:34 ` Will Deacon
2019-01-23 9:34 ` Will Deacon
2019-01-23 20:11 ` Waiman Long
2019-01-23 20:11 ` Waiman Long
2019-01-23 20:40 ` Peter Zijlstra [this message]
2019-01-23 20:40 ` Peter Zijlstra
2019-01-23 22:36 ` Waiman Long
2019-01-23 22:36 ` Waiman Long
2019-01-23 3:49 ` [PATCH v2 2/4] locking/qspinlock_stat: Track the no MCS node available case Waiman Long
2019-01-23 3:49 ` Waiman Long
2019-01-23 9:23 ` Will Deacon
2019-01-23 9:23 ` Will Deacon
2019-01-23 20:04 ` Waiman Long
2019-01-23 20:04 ` Waiman Long
2019-01-23 3:49 ` [PATCH v2 3/4] locking/qspinlock_stat: Separate out the PV specific stat counts Waiman Long
2019-01-23 3:49 ` Waiman Long
2019-01-23 3:49 ` [PATCH v2 4/4] locking/qspinlock_stat: Allow QUEUED_LOCK_STAT for all archs Waiman Long
2019-01-23 3:49 ` 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=20190123204038.GL13777@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=longman@redhat.com \
--cc=mingo@redhat.com \
--cc=srinivas.eeda@oracle.com \
--cc=tglx@linutronix.de \
--cc=will.deacon@arm.com \
--cc=x86@kernel.org \
--cc=zhenzhong.duan@oracle.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox