Messages in this thread Patch in this message | | | From | Nicholas Piggin <> | Subject | [PATCH v2 10/12] locking/qspinlock: paravirt use simple trylock in case idx overflows | Date | Wed, 13 Jul 2022 17:07:02 +1000 |
| |
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@gmail.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
| |