Messages in this thread | | | Date | Wed, 30 Jun 2010 15:36:37 +0100 | From | "Jan Beulich" <> | Subject | Re: [PATCH 2/4, v2] x86: enlightenment for ticket spin locks - Xen implementation |
| |
>>> On 30.06.10 at 16:25, Jeremy Fitzhardinge <jeremy@goop.org> wrote: > On 06/30/2010 04:03 PM, Jan Beulich wrote: >> Afaics the unlock still involves a function call *in all cases* with >> pvops spinlocks, whereas it's a single inline instruction without. >> > > No. The unlock path can see if there are any further waiters by looking > at the ticket in the, and only do the kick call if there are some.
Are we perhaps talking about different things? I'm referring to
static __always_inline void arch_spin_unlock(struct arch_spinlock *lock) { PVOP_VCALL1(pv_lock_ops.spin_unlock, lock); }
which is an indirect call which, as I understand it, gets replaced with a direct one at runtime. But it remains to be a call (as opposed to being a single inc instructions without CONFIG_PARAVIRT_SPINLOCKS).
Jan
| |