Commit 78feefc5 authored by Michael Wang's avatar Michael Wang Committed by Thomas Gleixner

sched: using dst_rq instead of this_rq during load balance

As we already have dst_rq in lb_env, using or changing "this_rq" do not
make sense.

This patch will replace "this_rq" with dst_rq in load_balance, and we
don't need to change "this_rq" while process LBF_SOME_PINNED any more.
Signed-off-by: default avatarMichael Wang <wangyun@linux.vnet.ibm.com>
Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/501F8357.3070102@linux.vnet.ibm.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent edde96ea
...@@ -4283,7 +4283,7 @@ static int load_balance(int this_cpu, struct rq *this_rq, ...@@ -4283,7 +4283,7 @@ static int load_balance(int this_cpu, struct rq *this_rq,
goto out_balanced; goto out_balanced;
} }
BUG_ON(busiest == this_rq); BUG_ON(busiest == env.dst_rq);
schedstat_add(sd, lb_imbalance[idle], env.imbalance); schedstat_add(sd, lb_imbalance[idle], env.imbalance);
...@@ -4304,7 +4304,7 @@ static int load_balance(int this_cpu, struct rq *this_rq, ...@@ -4304,7 +4304,7 @@ static int load_balance(int this_cpu, struct rq *this_rq,
update_h_load(env.src_cpu); update_h_load(env.src_cpu);
more_balance: more_balance:
local_irq_save(flags); local_irq_save(flags);
double_rq_lock(this_rq, busiest); double_rq_lock(env.dst_rq, busiest);
/* /*
* cur_ld_moved - load moved in current iteration * cur_ld_moved - load moved in current iteration
...@@ -4312,7 +4312,7 @@ static int load_balance(int this_cpu, struct rq *this_rq, ...@@ -4312,7 +4312,7 @@ static int load_balance(int this_cpu, struct rq *this_rq,
*/ */
cur_ld_moved = move_tasks(&env); cur_ld_moved = move_tasks(&env);
ld_moved += cur_ld_moved; ld_moved += cur_ld_moved;
double_rq_unlock(this_rq, busiest); double_rq_unlock(env.dst_rq, busiest);
local_irq_restore(flags); local_irq_restore(flags);
if (env.flags & LBF_NEED_BREAK) { if (env.flags & LBF_NEED_BREAK) {
...@@ -4348,8 +4348,7 @@ static int load_balance(int this_cpu, struct rq *this_rq, ...@@ -4348,8 +4348,7 @@ static int load_balance(int this_cpu, struct rq *this_rq,
if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0 && if ((env.flags & LBF_SOME_PINNED) && env.imbalance > 0 &&
lb_iterations++ < max_lb_iterations) { lb_iterations++ < max_lb_iterations) {
this_rq = cpu_rq(env.new_dst_cpu); env.dst_rq = cpu_rq(env.new_dst_cpu);
env.dst_rq = this_rq;
env.dst_cpu = env.new_dst_cpu; env.dst_cpu = env.new_dst_cpu;
env.flags &= ~LBF_SOME_PINNED; env.flags &= ~LBF_SOME_PINNED;
env.loop = 0; env.loop = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment