* Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > So the problem we need to solve is: > > retry: > lock(B); > if (!try_lock(A)) { > unlock(B); > cpu_relax(); > goto retry; > } > > So instead of doing that proposed magic boost, we can do something > more straight forward: > > retry: > lock(B); > if (!try_lock(A)) { > lock_and_drop(A, B); > unlock(A); > goto retry; > } > > lock_and_drop() queues the task as a waiter on A, drops B and then > does the PI adjustment on A. > > Thoughts? So why not do: lock(B); if (!trylock(A)) { unlock(B); lock(A); lock(B); } ? Or, if this can be done, why didn't we do: lock(A); lock(B); to begin with? i.e. I'm not sure the problem is properly specified. Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html