Re: [PATCH -v2 15/17] sched: Fix migrate_disable() vs rt/dl balancing

From: Peter Zijlstra
Date: Tue Oct 06 2020 - 03:59:59 EST


On Mon, Oct 05, 2020 at 04:57:32PM +0200, Peter Zijlstra wrote:
> +static inline struct task_struct *get_push_task(struct rq *rq)
> +{
> + struct task_struct *p = rq->curr;
> +
> + lockdep_assert_held(&rq->lock);
> +
> + if (rq->push_busy)
> + return NULL;
> +
> + if (p->nr_cpus_allowed == 1)
> + return NULL;

This; that means what when we're stuck below a per-cpu thread, we're
toast. There's just nothing much you can do... :/

> +
> + rq->push_busy = true;
> + return get_task_struct(p);
> +}