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...