On 2016/04/18 at 16:23, Thomas Gleixner wrote: > On Thu, 14 Apr 2016, Xunlei Pang wrote: >> We should deboost before waking the high-prio task such that >> we don't run two tasks with the 'same' priority. > No. This is fundamentaly broken. > > T1 (prio 0) lock(X) > > --> preemption > > T2 (prio 10) lock(X) > boost(T1) > schedule() > > T1 (prio 10) unlock(X)
We add a preempt_disable() before deboost to avoid the breakage, there's also some comment about this in the patch's code. Regards, Xunlei > deboost() > (prio 0) > > --> preemption > > T3 (prio 5) .... > > Classic priority inversion enabled by a mechanism to avoid it. Brilliant > stuff. > > Thanks, > > tglx