The patch that I sent out is just a proof of concept to make sure
that it can fix that particular case. I do plan to refactor it if I
decide to go ahead with an official one. Unlike the OSQ, there can be
no more than one waiter spinner as the wakeup function is directed to
only the first task in the wait list and the spinning won't happen
until the task is first woken up. In the worst case scenario, there
are only 2 spinners spinning on the lock and the owner field, one
from OSQ and one from the wait list. That shouldn't put too much
cacheline contention traffic to the system.