Loading kernel/sched/fair.c +21 −0 Original line number Diff line number Diff line Loading @@ -8195,6 +8195,27 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) return 0; } #ifdef CONFIG_SCHED_WALT if ((env->idle == CPU_NEWLY_IDLE) && is_min_capacity_cpu(env->dst_cpu) && !is_min_capacity_cpu(env->src_cpu) && walt_get_rtg_status(p)) { bool pull_to_silver_allowed = false; unsigned int cpu; for_each_cpu(cpu, env->cpus) { if (!is_min_capacity_cpu(cpu) && cpu_overutilized(cpu)) { pull_to_silver_allowed = true; break; } } if (!pull_to_silver_allowed) return 0; } #endif /* * Aggressive migration if: * 1) IDLE or NEWLY_IDLE balance. Loading Loading
kernel/sched/fair.c +21 −0 Original line number Diff line number Diff line Loading @@ -8195,6 +8195,27 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) return 0; } #ifdef CONFIG_SCHED_WALT if ((env->idle == CPU_NEWLY_IDLE) && is_min_capacity_cpu(env->dst_cpu) && !is_min_capacity_cpu(env->src_cpu) && walt_get_rtg_status(p)) { bool pull_to_silver_allowed = false; unsigned int cpu; for_each_cpu(cpu, env->cpus) { if (!is_min_capacity_cpu(cpu) && cpu_overutilized(cpu)) { pull_to_silver_allowed = true; break; } } if (!pull_to_silver_allowed) return 0; } #endif /* * Aggressive migration if: * 1) IDLE or NEWLY_IDLE balance. Loading