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.

[...]

Reply via email to