Michael Ellerman <m...@ellerman.id.au> 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