| Date | Tue, 6 Oct 2020 09:59:39 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH -v2 15/17] sched: Fix migrate_disable() vs rt/dl balancing |
| |
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); > +}
|