aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2014-09-24 10:37:20 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-09-26 06:22:39 -0400
commit48e9a6c1f54695609b709bf674aac133794ada00 (patch)
tree90058dfb8a3a6b1f758623fcad7ac9bc8e88a90c
parent2a0a5b2299b9bef76123fac91e68d39cb361c33e (diff)
s390/topology: call set_sched_topology early
The call to topology_init is too late for the set_sched_topology call. The initial scheduling domain structure has already been established with default topology array. Use the smp_cpus_done() call to get the s390 specific topology array registered early enough. Cc: stable@vger.kernel.org # v3.16+ Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/kernel/topology.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
index 355a16c55702..b93bed76ea94 100644
--- a/arch/s390/kernel/topology.c
+++ b/arch/s390/kernel/topology.c
@@ -464,15 +464,17 @@ static struct sched_domain_topology_level s390_topology[] = {
464 464
465static int __init topology_init(void) 465static int __init topology_init(void)
466{ 466{
467 if (!MACHINE_HAS_TOPOLOGY) { 467 if (MACHINE_HAS_TOPOLOGY)
468 set_topology_timer();
469 else
468 topology_update_polarization_simple(); 470 topology_update_polarization_simple();
469 goto out;
470 }
471 set_topology_timer();
472out:
473
474 set_sched_topology(s390_topology);
475
476 return device_create_file(cpu_subsys.dev_root, &dev_attr_dispatching); 471 return device_create_file(cpu_subsys.dev_root, &dev_attr_dispatching);
477} 472}
478device_initcall(topology_init); 473device_initcall(topology_init);
474
475static int __init early_topology_init(void)
476{
477 set_sched_topology(s390_topology);
478 return 0;
479}
480early_initcall(early_topology_init);