Commit edcd262d authored by Ingo Molnar's avatar Ingo Molnar Committed by Linus Torvalds

- this patch fixes the migration init to correctly work with the

  new hot-pluggable CPU enumeration method, and the possibility
  to not boot on CPU#0.

(btw., i find RR's comment offensive. How can any code be called 'crap' just
because the author of a new patch has not converted the code to the new
assumptions yet? The original code was perfectly valid.)
parent 278b098b
......@@ -1775,6 +1775,8 @@ void set_cpus_allowed(task_t *p, unsigned long new_mask)
preempt_enable();
}
static __initdata int master_migration_thread;
static int migration_thread(void * bind_cpu)
{
int cpu = (int) (long) bind_cpu;
......@@ -1786,14 +1788,12 @@ static int migration_thread(void * bind_cpu)
sigfillset(&current->blocked);
set_fs(KERNEL_DS);
/* FIXME: First CPU may not be zero, but this crap code
vanishes with hotplug cpu patch anyway. --RR */
/*
* The first migration thread is started on CPU #0. This one can
* migrate the other migration threads to their destination CPUs.
* The first migration thread is started on the boot CPU, it
* migrates the other migration threads to their destination CPUs.
*/
if (cpu != 0) {
while (!cpu_rq(0)->migration_thread)
if (cpu != master_migration_thread) {
while (!cpu_rq(master_migration_thread)->migration_thread)
yield();
set_cpus_allowed(current, 1UL << cpu);
}
......@@ -1857,7 +1857,9 @@ void __init migration_init(void)
{
int cpu;
current->cpus_allowed = 1UL << 0;
master_migration_thread = smp_processor_id();
current->cpus_allowed = 1UL << master_migration_thread;
for (cpu = 0; cpu < NR_CPUS; cpu++) {
if (!cpu_online(cpu))
continue;
......
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