Messages in this thread | | | From | Vincent Guittot <> | Date | Thu, 25 Nov 2021 10:05:58 +0100 | Subject | Re: [PATCH] sched/fair: Fix detection of per-CPU kthreads waking a task |
| |
On Wed, 24 Nov 2021 at 16:42, Vincent Donnefort <vincent.donnefort@arm.com> wrote: > > select_idle_sibling() will return prev_cpu for the case where the task is > woken up by a per-CPU kthread. However, the idle task has been recently > modified and is now identified by is_per_cpu_kthread(), breaking the > behaviour described above. Using !is_idle_task() ensures we do not > spuriously trigger that select_idle_sibling() exit path. > > Fixes: 00b89fe0197f ("sched: Make the idle task quack like a per-CPU kthread") > Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com> > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 945d987246c5..8bf95b0e368d 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -6399,6 +6399,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) > * pattern is IO completions. > */ > if (is_per_cpu_kthread(current) && > + !is_idle_task(current) && > prev == smp_processor_id() && > this_rq()->nr_running <= 1) { > return prev;
AFAICT, this can't be possible for a symmetric system because it would have been already returned by other conditions. Only an asymmetric system can face such a situation if the task doesn't fit which is the subject of your other patch. so this patch seems irrelevant outside the other one
> -- > 2.25.1 >
| |