[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220713070704.308394-11-npiggin@gmail.com>
Date: Wed, 13 Jul 2022 17:07:02 +1000
From: Nicholas Piggin <npiggin@...il.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Nicholas Piggin <npiggin@...il.com>,
Ingo Molnar <mingo@...hat.com>, Will Deacon <will@...nel.org>,
Waiman Long <longman@...hat.com>,
Boqun Feng <boqun.feng@...il.com>,
"linux-kernel @ vger . kernel . org" <linux-kernel@...r.kernel.org>
Subject: [PATCH v2 10/12] locking/qspinlock: paravirt use simple trylock in case idx overflows
The mcs node overflow fallback locking case does not have to use
pv_hybrid_queued_unfair_trylock as the trylock, which reduces the
differences between pv and !pv cases.
This was likely an artifact of function renaming making it use the pv
trylock, which is not a bug but it is unexpected.
Signed-off-by: Nicholas Piggin <npiggin@...il.com>
---
kernel/locking/qspinlock.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/kernel/locking/qspinlock.c b/kernel/locking/qspinlock.c
index df6d8af8f2a9..2ebb946a6b80 100644
--- a/kernel/locking/qspinlock.c
+++ b/kernel/locking/qspinlock.c
@@ -800,13 +800,8 @@ static __always_inline void queued_spin_lock_mcs_queue(struct qspinlock *lock, b
*/
if (unlikely(idx >= MAX_NODES)) {
lockevent_inc(lock_no_node);
- if (paravirt) {
- while (!pv_hybrid_queued_unfair_trylock(lock))
- cpu_relax();
- } else {
- while (!queued_spin_trylock(lock))
- cpu_relax();
- }
+ while (!queued_spin_trylock(lock))
+ cpu_relax();
goto release;
}
--
2.35.1
Powered by blists - more mailing lists