- unsigned long max_load_move = env->max_load_move;
- long rem_load_move = env->max_load_move;
-
- rcu_read_lock();
- update_h_load(cpu_of(env->src_rq));
-
- for_each_leaf_cfs_rq(env->src_rq, env->src_cfs_rq) {
- unsigned long busiest_h_load = env->src_cfs_rq->h_load;
- unsigned long busiest_weight = env->src_cfs_rq->load.weight;
- u64 rem_load, moved_load;
-
- if (env->flags & (LBF_NEED_BREAK|LBF_ABORT))
- break;
-
- /*
- * empty group or part of a throttled hierarchy
- */
- if (!env->src_cfs_rq->task_weight)
- continue;
-
- if (throttled_lb_pair(env->src_cfs_rq->tg,
- cpu_of(env->src_rq),
- env->dst_cpu))
- continue;
-
- rem_load = (u64)rem_load_move * busiest_weight;
- rem_load = div_u64(rem_load, busiest_h_load + 1);
-
- env->max_load_move = rem_load;
-
- moved_load = balance_tasks(env);
- if (!moved_load)
- continue;
-
- moved_load *= busiest_h_load;
- moved_load = div_u64(moved_load, busiest_weight + 1);