| Date | Wed, 18 Jun 2014 14:03:12 +0200 | From | Paolo Bonzini <> | Subject | Re: [PATCH 10/11] qspinlock: Paravirt support |
| |
Il 17/06/2014 00:08, Waiman Long ha scritto: >> +void __pv_queue_unlock(struct qspinlock *lock) >> +{ >> + int val = atomic_read(&lock->val); >> + >> + native_queue_unlock(lock); >> + >> + if (val & _Q_LOCKED_SLOW) >> + ___pv_kick_head(lock); >> +} >> + > > Again a race can happen here between the reading and writing of the lock > value. I can't think of a good way to do that without using cmpxchg.
Could you just use xchg on the locked byte?
Paolo
|