On Thu, Jun 26, 2025 at 12:41:03AM +0530, Shrikanth Hegde wrote: > Load balancer shouldn't spread CFS tasks into a CPU marked as Avoid. > Remove those CPUs from load balancing decisions. > > At wakeup, don't select a CPU marked as avoid. > > Signed-off-by: Shrikanth Hegde <sshe...@linux.ibm.com> > --- > while tesing didn't see cpu being marked as avoid while new_cpu is. > May need some more probing to see if even cpu can be. if so it could > lead to crash. > > kernel/sched/fair.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 7e2963efe800..406288aef535 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -8546,7 +8546,12 @@ select_task_rq_fair(struct task_struct *p, int > prev_cpu, int wake_flags) > } > rcu_read_unlock(); > > - return new_cpu; > + /* Don't select a CPU marked as avoid for wakeup */ > + if (cpu_avoid(new_cpu)) > + return cpu; > + else > + return new_cpu; > + > }
There are more 'return's in this function, but you patch only one... > > /* > @@ -11662,6 +11667,9 @@ static int sched_balance_rq(int this_cpu, struct rq > *this_rq, > > cpumask_and(cpus, sched_domain_span(sd), cpu_active_mask); > > + /* Don't spread load into CPUs marked as avoid */ > + cpumask_andnot(cpus, cpus, cpu_avoid_mask); > + > schedstat_inc(sd->lb_count[idle]); > > redo: > -- > 2.43.0