diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 035e3864e046f0a41c051172e5f22e03e3226cf7..6a25aa14d0673b6d1bbd38424e7b927f0689e02a 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5675,8 +5675,10 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f if (!sd) { int sync_used = 0; + bool about_to_idle = (cpu_rq(cpu)->nr_running < 2); - if (sysctl_sched_sync_hint_enable && sync) { + if (sysctl_sched_sync_hint_enable && sync + && about_to_idle) { cpumask_t search_cpus; cpumask_and(&search_cpus, tsk_cpus_allowed(p), cpu_online_mask);