|
|
@@ -7565,6 +7565,7 @@ static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sd
|
|
|
{
|
|
|
struct sched_domain *child = env->sd->child;
|
|
|
struct sched_group *sg = env->sd->groups;
|
|
|
+ struct sg_lb_stats *local = &sds->local_stat;
|
|
|
struct sg_lb_stats tmp_sgs;
|
|
|
int load_idx, prefer_sibling = 0;
|
|
|
bool overload = false;
|
|
|
@@ -7581,7 +7582,7 @@ static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sd
|
|
|
local_group = cpumask_test_cpu(env->dst_cpu, sched_group_cpus(sg));
|
|
|
if (local_group) {
|
|
|
sds->local = sg;
|
|
|
- sgs = &sds->local_stat;
|
|
|
+ sgs = local;
|
|
|
|
|
|
if (env->idle != CPU_NEWLY_IDLE ||
|
|
|
time_after_eq(jiffies, sg->sgc->next_update))
|
|
|
@@ -7605,8 +7606,8 @@ static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sd
|
|
|
* the tasks on the system).
|
|
|
*/
|
|
|
if (prefer_sibling && sds->local &&
|
|
|
- group_has_capacity(env, &sds->local_stat) &&
|
|
|
- (sgs->sum_nr_running > 1)) {
|
|
|
+ group_has_capacity(env, local) &&
|
|
|
+ (sgs->sum_nr_running > local->sum_nr_running + 1)) {
|
|
|
sgs->group_no_capacity = 1;
|
|
|
sgs->group_type = group_classify(sg, sgs);
|
|
|
}
|