From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759156AbbFBO10 (ORCPT ); Tue, 2 Jun 2015 10:27:26 -0400 Received: from casper.infradead.org ([85.118.1.10]:57866 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759032AbbFBO1Q convert rfc822-to-8bit (ORCPT ); Tue, 2 Jun 2015 10:27:16 -0400 Message-ID: <1433255230.1495.2.camel@twins> Subject: Re: [RFC][PATCH 3/7] sched: Allow balance callbacks for check_class_changed() From: Peter Zijlstra To: Kirill Tkhai 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" Date: Tue, 02 Jun 2015 16:27:10 +0200 In-Reply-To: <449191433253514@web6g.yandex.ru> References: <20150601135818.506080835@infradead.org> <20150601140839.852669281@infradead.org> <449191433253514@web6g.yandex.ru> Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7BIT X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2015-06-02 at 16:58 +0300, Kirill Tkhai wrote: > 01.06.2015, 17:13, "Peter Zijlstra" : > > @@ -1010,7 +1014,7 @@ static inline void check_class_changed(s > > if (prev_class != p->sched_class) { > > if (prev_class->switched_from) > > prev_class->switched_from(rq, p); > > - /* Possble rq->lock 'hole'. */ > > + > > But switched_from_dl()->cancel_dl_timer() still unlocks rq->lock. > > It seems we should drop it (cancel_dl_timer) and move hrtimer_cancel() > from switched_from_dl() to finish_task_switch(). It will be executed > for all classes and completely take the functionality we implement > cancel_dl_timer() for. *groan* yes.. I don't like moving it into generic code though. more thinking required. > > p->sched_class->switched_to(rq, p); > > } else if (oldprio != p->prio || dl_task(p)) > > p->sched_class->prio_changed(rq, p, oldprio);