Commit 79c53799 authored by Dmitry Adamushko's avatar Dmitry Adamushko Committed by Ingo Molnar

sched: fix cpu hotplug

the CPU hotplug problems (crashes under high-volume unplug+replug
tests) seem to be related to migrate_dead_tasks().

Firstly I added traces to see all tasks being migrated with
migrate_live_tasks() and migrate_dead_tasks(). On my setup the problem
pops up (the one with "se == NULL" in the loop of
pick_next_task_fair()) shortly after the traces indicate that some has
been migrated with migrate_dead_tasks()). btw., I can reproduce it
much faster now with just a plain cpu down/up loop.

[disclaimer] Well, unless I'm really missing something important in
this late hour [/desclaimer] pick_next_task() is not something
appropriate for migrate_dead_tasks() :-)

the following change seems to eliminate the problem on my setup
(although, I kept it running only for a few minutes to get a few
messages indicating migrate_dead_tasks() does move tasks and the
system is still ok)
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 543cf4cb
...@@ -5887,6 +5887,7 @@ static void migrate_dead_tasks(unsigned int dead_cpu) ...@@ -5887,6 +5887,7 @@ static void migrate_dead_tasks(unsigned int dead_cpu)
next = pick_next_task(rq, rq->curr); next = pick_next_task(rq, rq->curr);
if (!next) if (!next)
break; break;
next->sched_class->put_prev_task(rq, next);
migrate_dead(dead_cpu, next); migrate_dead(dead_cpu, next);
} }
......
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