diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 3b93bff0f54d..6947e28faea6 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -11175,7 +11175,8 @@ int newidle_balance(struct rq *this_rq, struct rq_flags *rf) */ if (!cpu_active(this_cpu)) return 0; - if (!is_min_capacity_cpu(this_cpu) && silver_has_big_tasks()) + if (!is_min_capacity_cpu(this_cpu) && silver_has_big_tasks() + && (atomic_read(&this_rq->nr_iowait) == 0)) avg_idle = ULLONG_MAX; /* * This is OK, because current is on_cpu, which avoids it being picked