mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
sched: populate cpupool0 only after all cpus are up
Simplify cpupool initialization by populating cpupool0 with cpus only after all cpus are up. This avoids having to call the cpu notifier directly for cpu 0. With that in place there is no need to create cpupool0 earlier, so do that just before assigning the cpus. Initialize free cpus with all online cpus at that time in order to be able to add the cpu notifier late, too. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
This commit is contained in:
1 parent
6e0fc1c511
commit
b0000b128a
1 file changed
+14
-4
+14
-4
@@ -762,18 +762,28 @@ static struct notifier_block cpu_nfb = {
|
||||
.notifier_call = cpu_callback
|
||||
};
|
||||
|
||||
static int __init cpupool_presmp_init(void)
|
||||
static int __init cpupool_init(void)
|
||||
{
|
||||
unsigned int cpu;
|
||||
int err;
|
||||
void *cpu = (void *)(long)smp_processor_id();
|
||||
|
||||
cpupool0 = cpupool_create(0, 0, &err);
|
||||
BUG_ON(cpupool0 == NULL);
|
||||
cpupool_put(cpupool0);
|
||||
cpu_callback(&cpu_nfb, CPU_ONLINE, cpu);
|
||||
register_cpu_notifier(&cpu_nfb);
|
||||
|
||||
spin_lock(&cpupool_lock);
|
||||
|
||||
cpumask_copy(&cpupool_free_cpus, &cpu_online_map);
|
||||
|
||||
for_each_cpu ( cpu, &cpupool_free_cpus )
|
||||
cpupool_assign_cpu_locked(cpupool0, cpu);
|
||||
|
||||
spin_unlock(&cpupool_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
presmp_initcall(cpupool_presmp_init);
|
||||
__initcall(cpupool_init);
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
|
||||