diff options
author | Michael Ellerman <[email protected]> | 2023-10-18 22:18:24 +1100 |
---|---|---|
committer | Michael Ellerman <[email protected]> | 2023-10-18 22:26:42 +1100 |
commit | 1c7b4bc375c2a235e3dcb53c46111883df838e42 (patch) | |
tree | 68200c08fd680630d76ea0c613ab28e07cf9ed9a /arch/powerpc/lib/qspinlock.c | |
parent | c7e0d9bb9154c6e6b2ac8746faba27b53393f25e (diff) | |
parent | f9bc9bbe8afdf83412728f0b464979a72a3b9ec2 (diff) |
Merge branch fixes into next
Merge our fixes branch to bring in commits that are prerequisities for further
development or would cause conflicts.
Diffstat (limited to 'arch/powerpc/lib/qspinlock.c')
-rw-r--r-- | arch/powerpc/lib/qspinlock.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/lib/qspinlock.c b/arch/powerpc/lib/qspinlock.c index 253620979d0c..6dd2f46bd3ef 100644 --- a/arch/powerpc/lib/qspinlock.c +++ b/arch/powerpc/lib/qspinlock.c @@ -406,6 +406,9 @@ static __always_inline bool yield_to_prev(struct qspinlock *lock, struct qnode * if ((yield_count & 1) == 0) goto yield_prev; /* owner vcpu is running */ + if (get_owner_cpu(READ_ONCE(lock->val)) != yield_cpu) + goto yield_prev; /* re-sample lock owner */ + spin_end(); preempted = true; |