mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
MIPS: SMP: Implement parallel CPU bring up for EyeQ
Added support for starting CPUs in parallel on EyeQ to speed up boot time. On EyeQ5, booting 8 CPUs is now ~90ms faster. On EyeQ6, booting 32 CPUs is now ~650ms faster. Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
This commit is contained in:
committed by
Thomas Bogendoerfer
parent
0f4ae7c6ec
commit
76c43eb507
@@ -236,6 +236,7 @@ static void __init cps_smp_setup(void)
|
||||
/* Use the number of VPEs in cluster 0 core 0 for smp_num_siblings */
|
||||
if (!cl && !c)
|
||||
smp_num_siblings = core_vpes;
|
||||
cpumask_set_cpu(nvpes, &__cpu_primary_thread_mask);
|
||||
|
||||
for (v = 0; v < min_t(int, core_vpes, NR_CPUS - nvpes); v++) {
|
||||
cpu_set_cluster(&cpu_data[nvpes + v], cl);
|
||||
@@ -364,6 +365,7 @@ static void __init cps_prepare_cpus(unsigned int max_cpus)
|
||||
cl = cpu_cluster(¤t_cpu_data);
|
||||
c = cpu_core(¤t_cpu_data);
|
||||
cluster_bootcfg = &mips_cps_cluster_bootcfg[cl];
|
||||
cpu_smt_set_num_threads(core_vpes, core_vpes);
|
||||
core_bootcfg = &cluster_bootcfg->core_config[c];
|
||||
bitmap_set(cluster_bootcfg->core_power, cpu_core(¤t_cpu_data), 1);
|
||||
atomic_set(&core_bootcfg->vpe_mask, 1 << cpu_vpe_id(¤t_cpu_data));
|
||||
|
||||
Reference in New Issue
Block a user