Re: [PATCH v4 0/3] qspinlock: Introducing a 4-byte queue spinlock

From: Linus Torvalds
Date: Thu Feb 20 2014 - 13:42:49 EST


On Thu, Feb 20, 2014 at 9:54 AM, Waiman Long <waiman.long@xxxxxx> wrote:
>
> I think we could implement 2 versions of _raw_spin_lock.

Yup. Or rather, I'd suggest implement just one version of
arch_spin_lock(), but at the top of it you do something like

#if CONFIG_PARAVIRT_SPINLOCK
if (static_key_false(&unfair_spinlocks)) {
.. do paravirt unfair lock version ..
}
#endif

which should basically generate almost-perfect code: it's one extra
no-op for the native case if CONFIG_PARAVIRT_SPINLOCK is on, which
turns into a branch for the unfair version for paravirtualization.

Or something like that.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/