Re: [RFC PATCH 5/5] powerpc/smp: Remap boot CPU onto core 0 if >= nr_cpu_ids
From: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
Date: 2024-01-02 04:47:00
From: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
Date: 2024-01-02 04:47:00
Michael Ellerman [off-list ref] writes: ....
#ifdef CONFIG_PPC64 int boot_cpu_hwid = -1;@@ -492,12 +493,26 @@ void __init smp_setup_cpu_maps(void) avail = !of_property_match_string(dn, "enable-method", "spin-table"); - cpu = assign_threads(cpu, nthreads, avail, intserv); + if (boot_core_hwid >= 0) { + if (cpu == 0) { + pr_info("Skipping CPU node %pOF to allow for boot core.\n", dn); + cpu = nthreads; + continue; + } - if (cpu >= nr_cpu_ids) { + if (be32_to_cpu(intserv[0]) == boot_core_hwid) { + pr_info("Renumbered boot core %pOF to logical 0\n", dn); + assign_threads(0, nthreads, avail, intserv); + of_node_put(dn); + break;
I was expecting a 'continue' here. Why 'break' the loop? The condition that should break the loop should be cpu >= nr_cpu_ids
+ }
+ } else if (cpu >= nr_cpu_ids) {
of_node_put(dn);
break;
}
+
+ if (cpu < nr_cpu_ids)
+ cpu = assign_threads(cpu, nthreads, avail, intserv);
}
/* If no SMT supported, nthreads is forced to 1 */
--
2.43.0-aneesh