On Tue, Feb 17, 2015 at 01:31:39PM +0100, Peter Zijlstra wrote: > On Tue, Feb 17, 2015 at 02:33:58PM +0300, Kirill Tkhai wrote: > > > So, we move task_rq_lock() to sched.h, and dl_task_timer() uses it? > > Yep, like this. I've also modified your earlier patch to dl_task_time() > back to its original form. > > --- > Subject: sched: Make dl_task_time() use task_rq_lock() > From: Peter Zijlstra <pet...@infradead.org> > Date: Tue Feb 17 13:22:25 CET 2015 > > Kirill reported that a dl task can be throttled and dequeued at the > same time. This happens, when it becomes throttled in schedule(), > which is called to go to sleep: > > current->state = TASK_INTERRUPTIBLE; > schedule() > deactivate_task() > dequeue_task_dl() > update_curr_dl() > start_dl_timer() > __dequeue_task_dl() > prev->on_rq = 0; > > This invalidates the assumption from commit 0f397f2c90ce ("sched/dl: > Fix race in dl_task_timer()"): > > "The only reason we don't strictly need ->pi_lock now is because > we're guaranteed to have p->state == TASK_RUNNING here and are > thus free of ttwu races". > > And therefore we have to use the full task_rq_lock() here. > > This further amends the fact that we forgot to update the rq lock loop > for TASK_ON_RQ_MIGRATE, from commit cca26e8009d1 ("sched: Teach > scheduler to understand TASK_ON_RQ_MIGRATING state"). > > Reported-by: Kirill Tkhai <ktk...@parallels.com> > Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org> > --- > kernel/sched/core.c | 76 > ------------------------------------------------ > kernel/sched/deadline.c | 12 +------ > kernel/sched/sched.h | 76 > ++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 79 insertions(+), 85 deletions(-)
Duh, I put it under CONFIG_SMP, /me changes patch to not do this. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/