> BTW maybe it would be a good idea to switch the wait list to a hlist,> then the last user in the queue wouldn't need to > touch the cache line of the head. Or maybe even a single linked> list then some more cache bounces might be avoidable.

You need a list_head to get O(1) push at one end and O(1) pop at the other.In addition a singly-linked list makes interruptible ops non-O(1) also.