On Mon, Apr 05, 2021 at 09:11:07PM -0700, Ricardo Neri wrote: > @@ -8507,6 +8619,10 @@ static bool update_sd_pick_busiest(struct lb_env *env, > if (!sgs->sum_h_nr_running) > return false; > > + if (sgs->group_type == group_asym_packing && > + !asym_can_pull_tasks(env->dst_cpu, sds, sgs, sg)) > + return false;
All of this makes my head hurt; but afaict this isn't right. Your update_sg_lb_stats() change makes that we unconditionally set sgs->group_asym_packing, and then this is to undo that. But it's not clear this covers all cases right. Even if !sched_asym_prefer(), we could end up selecting this sg as busiest, but you're just bailing out here.