Commit 810ce4cd authored by Bjorn Helgaas's avatar Bjorn Helgaas Committed by Linus Torvalds

[PATCH] active_load_balance() deadlock

active_load_balance() looks susceptible to deadlock when busiest==rq.
Without the following patch, my 128-way box deadlocks consistently
during boot-time driver init.
parent 40046d1a
...@@ -1844,6 +1844,8 @@ static void active_load_balance(runqueue_t *busiest, int busiest_cpu) ...@@ -1844,6 +1844,8 @@ static void active_load_balance(runqueue_t *busiest, int busiest_cpu)
} }
rq = cpu_rq(push_cpu); rq = cpu_rq(push_cpu);
if (busiest == rq)
goto next_group;
double_lock_balance(busiest, rq); double_lock_balance(busiest, rq);
move_tasks(rq, push_cpu, busiest, 1, sd, IDLE); move_tasks(rq, push_cpu, busiest, 1, sd, IDLE);
spin_unlock(&rq->lock); spin_unlock(&rq->lock);
......
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