From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755025AbbBQNcd (ORCPT ); Tue, 17 Feb 2015 08:32:33 -0500 Received: from casper.infradead.org ([85.118.1.10]:60323 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754981AbbBQNcc (ORCPT ); Tue, 17 Feb 2015 08:32:32 -0500 Date: Tue, 17 Feb 2015 14:32:26 +0100 From: Peter Zijlstra To: Kirill Tkhai Cc: linux-kernel@vger.kernel.org, Ingo Molnar , Josh Poimboeuf Subject: Re: [PATCH] sched: Make dl_task_time() use task_rq_lock() Message-ID: <20150217133226.GW24151@twins.programming.kicks-ass.net> References: <1424170011.5749.20.camel@tkhai> <20150217111116.GL5029@twins.programming.kicks-ass.net> <20150217112616.GU24151@twins.programming.kicks-ass.net> <1424172838.5749.27.camel@tkhai> <20150217123139.GN5029@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150217123139.GN5029@twins.programming.kicks-ass.net> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > 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 > Signed-off-by: Peter Zijlstra (Intel) > --- > 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.