Wouldn't a third solution be to use ticket spinlocks everywhere, i.e. eliminateDo you have a patch to illustrate what you mean? How do you keep track of the target vcpu for the directed wakeup? Are you using the event-poll mechanism to block?
the current indirection, and replace it by an indirection for just the contention
case? As I view it, the problem for Xen aren't really the ticket locks by
themselves, but rather the extra spinning involved, which is of concern only
if a lock is contended. We're using ticket locks quite happily in our kernels,
with directed instead of global wakeup from the unlock path.