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

Reply via email to