Re: Spinlocks: Factor our GENERIC_LOCKBREAK in order to avoid spinwith irqs disable

From: Peter Zijlstra
Date: Mon Jun 23 2008 - 16:58:57 EST


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..

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/