Re: [PATCH 1/2] sched: check for pushing rt tasks after all scheduling

From: Gregory Haskins
Date: Wed Jul 29 2009 - 09:14:52 EST


Peter Zijlstra wrote:
> On Wed, 2009-07-29 at 00:21 -0400, Steven Rostedt wrote:
>> plain text document attachment
>> (0001-sched-check-for-pushing-rt-tasks-after-all-schedulin.patch)
>> From: Steven Rostedt <srostedt@xxxxxxxxxx>
>>
>> The current method for pushing RT tasks after scheduling only
>> happens after a context switch. But we found cases where a task
>> is set up on a run queue to be pushed but the push never happens
>> because the schedule chooses the same task.
>>
>> This bug was found with the help of Gregory Haskins and the use of
>> ftrace (trace_printk). It tooks several days for both of us analyzing
>> the code and the trace output to find this.
>
>
>> + if (current->sched_class->needs_post_schedule)
>> + post_schedule = current->sched_class->needs_post_schedule(rq);
>
>
>> + if (post_schedule)
>> + current->sched_class->post_schedule(rq);
>
>
> Why can't we omit that first call, and do the second unconditionally,
> using storage in the class rq to save state?

Yeah, that is a good idea. Plus I see another bug that Steven and I
overlooked. Steve is out on holiday today, so I will put together a v2.

Regards,
-Greg

Attachment: signature.asc
Description: OpenPGP digital signature