Messages in this thread | | | Subject | Re: Spinlocks: Factor our GENERIC_LOCKBREAK in order to avoid spin with irqs disable | From | Peter Zijlstra <> | Date | Mon, 23 Jun 2008 22:58:50 +0200 |
| |
On Mon, 2008-06-23 at 13:45 -0700, Christoph Lameter wrote: > On Mon, 23 Jun 2008, Peter Zijlstra wrote: > > > > It is good that the locks are build with _trylock and _can_lock because > > > then we can reenable interrupts while spinning. > > > > Well, good and bad, the turn side is that fairness schemes like ticket > > locks are utterly defeated. > > True. But maybe we can make these fairness schemes more generic so that > they can go into core code?
The trouble with ticket locks is that they can't handle waiters going away - or in this case getting preempted by irq handlers. The one who took the ticket must pass it on, so if you're preempted it just sits there being idle, until you get back to deal with the lock.
But yeah, perhaps another fairness scheme might work in the generic code..
| |