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