On 5/6/19 6:48 AM, Luca Abeni wrote: [...]
> diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c > index 5b981eeeb944..3436f3d8fa8f 100644 > --- a/kernel/sched/deadline.c > +++ b/kernel/sched/deadline.c > @@ -1584,6 +1584,9 @@ select_task_rq_dl(struct task_struct *p, int cpu, int > sd_flag, int flags) > if (sd_flag != SD_BALANCE_WAKE) > goto out; > > + if (dl_entity_is_special(&p->dl)) > + goto out; I wonder if this is really required. The if condition 1591 if (unlikely(dl_task(curr)) && 1592 (curr->nr_cpus_allowed < 2 || 1593 !dl_entity_preempt(&p->dl, &curr->dl)) && 1594 (p->nr_cpus_allowed > 1)) { further below uses '!dl_entity_preempt(&p->dl, &curr->dl))' which returns 'dl_entity_is_special(a) || ...' A BUG_ON(dl_entity_is_special(&p->dl)) in this if condition hasn't triggered on my platform yet. [...]