[RFC PATCH 5/5] powerpc/smp: Remap boot CPU onto core 0 if >= nr_cpu_ids

Aneesh Kumar K.V aneesh.kumar at kernel.org
Tue Jan 2 15:46:04 AEDT 2024


Michael Ellerman <mpe at 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


More information about the Linuxppc-dev mailing list