Re: [PATCH] rtmutex: ensure only the top waiter or higher priority task can take the lock and reduce unrelated boosting

Darren Hart
2010-12-16T20:33:53Z

On 12/15/2010 06:24 AM, Lai Jiangshan wrote:
> On Wed, Dec 15, 2010 at 8:07 PM, Thomas Gleixner<tglx@linutronix.de> wrote:
>> On Wed, 15 Dec 2010, Lai Jiangshan wrote:
>>> + if (waiter || rt_mutex_has_waiters(lock)) {
>>> + unsigned long flags;
>>> + struct rt_mutex_waiter *top;
>>> +
>>> + raw_spin_lock_irqsave(&task->pi_lock, flags);
>>> +
>>> + /* remove the queued waiter. */
>>> + if (waiter) {
>>> + plist_del(&waiter->list_entry,&lock->wait_list);
>>> + task->pi_blocked_on = NULL;
>>> + }
>>> +
>>> + /*
>>> + * We have to enqueue the top waiter(if have) into
>>> + * task->pi_waiters list and would get boost from it.
>>
>> No, we don't get boosted from it. We just have to enqueue it into
>> pi_waiters list. There is no boosting happening at this point. Please
>> be very careful with the comments in this code.
>>
>> Otherwise this looks really interesting. Still this wants to be ported
>> to -rt and stress tested there.
>>
>
> Hi, Thomas,
>
> Where can I find the code of stress testcases?

See http://rt.wiki.kernel.org, There are several benchmarks available
for RT there.

I believe there are some built-int rt-mutex testers as well:\
CONFIG_RT_MUTEX_TESTER

--
Darren Hart
Yocto Linux Kernel