From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752778AbbKIKcb (ORCPT ); Mon, 9 Nov 2015 05:32:31 -0500 Received: from bombadil.infradead.org ([198.137.202.9]:37818 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750772AbbKIKc3 (ORCPT ); Mon, 9 Nov 2015 05:32:29 -0500 Date: Mon, 9 Nov 2015 11:32:25 +0100 From: Peter Zijlstra To: Joonwoo Park Cc: Ingo Molnar , linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, ohaugan@codeaurora.org Subject: Re: [PATCH v4] sched: fix incorrect wait time and wait count statistics Message-ID: <20151109103225.GI17308@twins.programming.kicks-ass.net> References: <20151028024054.GA8839@codeaurora.org> <1446007613-6922-1-git-send-email-joonwoop@codeaurora.org> <20151106135749.GT17308@twins.programming.kicks-ass.net> <20151107024142.GA24023@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20151107024142.GA24023@codeaurora.org> 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 Fri, Nov 06, 2015 at 06:41:43PM -0800, Joonwoo Park wrote: > On Fri, Nov 06, 2015 at 02:57:49PM +0100, Peter Zijlstra wrote: > > On Tue, Oct 27, 2015 at 09:46:53PM -0700, Joonwoo Park wrote: > > > @@ -1272,6 +1272,15 @@ void set_task_cpu(struct task_struct *p, unsigned int new_cpu) > > > WARN_ON_ONCE(p->state != TASK_RUNNING && p->state != TASK_WAKING && > > > !p->on_rq); > > > > > > + /* > > > + * Migrating fair class task must have p->on_rq = TASK_ON_RQ_MIGRATING, > > > + * because schedstat_wait_{start,end} rebase migrating task's wait_start > > > + * time relying on p->on_rq. > > > + */ > > > + WARN_ON_ONCE(p->state == TASK_RUNNING && > > > + p->sched_class == &fair_sched_class && > > > + (p->on_rq && !task_on_rq_migrating(p))); > > > + > > > > Why do we have to test p->on_rq? Would not ->state == RUNNING imply > > that? > > > > sched_fork() sets p->state = RUNNING before changing task cpu. > Please let me know if you got better idea. Ah, indeed. OK.