diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 150c3df8b7b0..8e70e238e528 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6463,9 +6463,10 @@ static void find_best_target(struct sched_domain *sd, cpumask_t *cpus, goto out; /* fast path for prev_cpu */ - if ((capacity_orig_of(prev_cpu) == capacity_orig_of(start_cpu)) && - !cpu_isolated(prev_cpu) && cpu_online(prev_cpu) && - idle_cpu(prev_cpu)) { + if (((capacity_orig_of(prev_cpu) == capacity_orig_of(start_cpu)) || + asym_cap_siblings(prev_cpu, start_cpu)) && + !cpu_isolated(prev_cpu) && cpu_online(prev_cpu) && + idle_cpu(prev_cpu)) { if (idle_get_state_idx(cpu_rq(prev_cpu)) <= 1) { target_cpu = prev_cpu;