Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753180AbdGSHWF (ORCPT ); Wed, 19 Jul 2017 03:22:05 -0400 Received: from bombadil.infradead.org ([65.50.211.133]:55625 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752315AbdGSHWD (ORCPT ); Wed, 19 Jul 2017 03:22:03 -0400 Date: Wed, 19 Jul 2017 09:21:43 +0200 From: Peter Zijlstra To: Juri Lelli Cc: mingo@redhat.com, rjw@rjwysocki.net, viresh.kumar@linaro.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, tglx@linutronix.de, vincent.guittot@linaro.org, rostedt@goodmis.org, luca.abeni@santannapisa.it, claudio@evidence.eu.com, tommaso.cucinotta@santannapisa.it, bristot@redhat.com, mathieu.poirier@linaro.org, tkjos@android.com, joelaf@google.com, andresoportus@google.com, morten.rasmussen@arm.com, dietmar.eggemann@arm.com, patrick.bellasi@arm.com, Ingo Molnar , "Rafael J . Wysocki" Subject: Re: [RFC PATCH v1 8/8] sched/deadline: make bandwidth enforcement scale-invariant Message-ID: <20170719072143.lploljodns3kfucf@hirez.programming.kicks-ass.net> References: <20170705085905.6558-1-juri.lelli@arm.com> <20170705085905.6558-9-juri.lelli@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170705085905.6558-9-juri.lelli@arm.com> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1118 Lines: 31 On Wed, Jul 05, 2017 at 09:59:05AM +0100, Juri Lelli wrote: > @@ -1156,9 +1157,26 @@ static void update_curr_dl(struct rq *rq) > if (unlikely(dl_entity_is_special(dl_se))) > return; > > - if (unlikely(dl_se->flags & SCHED_FLAG_RECLAIM)) > - delta_exec = grub_reclaim(delta_exec, rq, &curr->dl); > - dl_se->runtime -= delta_exec; > + /* > + * For tasks that participate in GRUB, we implement GRUB-PA: the > + * spare reclaimed bandwidth is used to clock down frequency. > + * > + * For the others, we still need to scale reservation parameters > + * according to current frequency and CPU maximum capacity. > + */ > + if (unlikely(dl_se->flags & SCHED_FLAG_RECLAIM)) { > + scaled_delta_exec = grub_reclaim(delta_exec, > + rq, > + &curr->dl); > + } else { > + unsigned long scale_freq = arch_scale_freq_capacity(cpu); > + unsigned long scale_cpu = arch_scale_cpu_capacity(NULL, cpu); > + > + scaled_delta_exec = cap_scale(delta_exec, scale_freq); > + scaled_delta_exec = cap_scale(scaled_delta_exec, scale_cpu); > + } > + > + dl_se->runtime -= scaled_delta_exec; > This I don't get...