On Thu, Aug 08, 2019 at 10:46:52AM +0200, Juri Lelli wrote: > On 08/08/19 10:11, Dietmar Eggemann wrote:
> > What about the fast path in pick_next_task()? > > > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > > index bffe849b5a42..f1ea6ae16052 100644 > > --- a/kernel/sched/core.c > > +++ b/kernel/sched/core.c > > @@ -3742,6 +3742,9 @@ pick_next_task(struct rq *rq, struct task_struct > > *prev, struct rq_flags *rf) > > if (unlikely(!p)) > > p = idle_sched_class.pick_next_task(rq, prev, rf); > > > > + if (p->sched_class == &fair_sched_class && p->server) > > + p->server = NULL; > > + > > Hummm, but then who sets it back to the correct server. AFAIU > update_curr() needs a ->server to do the correct DL accounting? The above looks ok. The pick_next_task_dl() when it selects a server will set ->server.