On Fri, 30 May 2008, Peter Zijlstra wrote: > Remember, horribly long on -rt is in the order of ~30us. > > See for instance the path: > > flush_slab() > slab_lock() <-- bit_spinlock > deactive_slab() > loop over objects looping over all objects is rarely ever done. > unfreeze_slab() > add_partial() > spin_lock(&n->list_lock) <-- another lock > > all of that runs with preempt disabled, and worse it can spin for some > indefinite amount of time. > > That is totally unacceptable on -rt, so we need to make it all > preemptible and use sleeping locks (IRQ inversion can't happen, for the > only thing that runs in hardirq is try_to_wake_up()). The way I thought about -rt was that it would convert the spinlocks to semaphores. Isnt it possible to sleep on a bit spinlock in -rt? Aside from that I would have thought that the simple disabling of rescheduling on another processor in some context would gets us there. Never thought about the details though. -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html