Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753634AbbFCKmy (ORCPT ); Wed, 3 Jun 2015 06:42:54 -0400 Received: from forward17o.cmail.yandex.net ([37.9.109.214]:59263 "EHLO forward17o.cmail.yandex.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751565AbbFCKmr (ORCPT ); Wed, 3 Jun 2015 06:42:47 -0400 From: Kirill Tkhai To: Peter Zijlstra Cc: "umgwanakikbuti@gmail.com" , "mingo@elte.hu" , "ktkhai@parallels.com" , "rostedt@goodmis.org" , "juri.lelli@gmail.com" , "pang.xunlei@linaro.org" , "oleg@redhat.com" , "linux-kernel@vger.kernel.org" , "luca.abeni@unitn.it" In-Reply-To: <20150603073227.GW3644@twins.programming.kicks-ass.net> References: <20150601135818.506080835@infradead.org> <20150601140839.852669281@infradead.org> <449191433253514@web6g.yandex.ru> <1433255230.1495.2.camel@twins> <20150602160724.GS18673@twins.programming.kicks-ass.net> <249151433262439@web6m.yandex.ru> <20150603073227.GW3644@twins.programming.kicks-ass.net> Subject: Re: [RFC][PATCH 3/7] sched: Allow balance callbacks for check_class_changed() MIME-Version: 1.0 Message-Id: <226151433328161@web20o.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Wed, 03 Jun 2015 13:42:41 +0300 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=koi8-r Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1724 Lines: 44 [resend] 03.06.2015, 10:32, "Peter Zijlstra" : > On Tue, Jun 02, 2015 at 07:27:19PM +0300, Kirill Tkhai wrote: >>> ?+ * task_dead_dl() will cancel our timer if we happen to die while >>> ?+ * its still pending. >> ?task_dead_dl() is called for tasks of deadline class only. So if we do that, >> ?the timer may be executed after final task's dead. > > Indeed; sleep deprived brain misses the obvious :/ I have an idea, but it require small hrtimer modification. We may use task_struct counters {get,put}_task_struct(), when we're starting or cancelling the timer, and in timer handler. But it require to return back the commit: commit 61699e13072a89880aa584dcc64c6da465fb2ccc Author: Thomas Gleixner Date: Tue Apr 14 21:09:23 2015 +0000 hrtimer: Remove hrtimer_start() return value because restart of the timer races with time handler. Also, it's not clearly for me if it's safe to do the final put_task_struct() from irq context and how it worsens life of RT people. > I can't seem to come up with anything much better than pulling that > hrtimer_cancel() into finish_task_switch(), however sad that is. > > Something like: > > ??for_each_class(class) { > ????????if (class->task_dead) > ????????????????class->task_dead(prev); > ??} > > Would be nicest, but will slow down the common case. And a callback list > has the downside of having to preallocate entries for every task, > causing mostly pointless memory overhead. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/