Messages in this thread Patch in this message | | | From | Vincent Donnefort <> | Subject | [PATCH v2] sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity | Date | Thu, 25 Nov 2021 10:12:39 +0000 |
| |
select_idle_sibling() has a special case for tasks woken up by a per-CPU kthread. For this case, the chosen CPU is the previous one. This is an issue for asymmetric CPU capacity systems where the wakee might not fit that CPU anymore. Evaluate asym_fits_capacity() for prev_cpu before using the exit path described above.
Fixes: b4c9c9f15649 ("sched/fair: Prefer prev cpu in asymmetric wakeup path") Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 6291876a9d32..b90dc6fd86ca 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6410,7 +6410,8 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) */ if (is_per_cpu_kthread(current) && prev == smp_processor_id() && - this_rq()->nr_running <= 1) { + this_rq()->nr_running <= 1 && + asym_fits_capacity(task_util, prev)) { return prev; } -- 2.25.1
| |