powerpc/smp: Increase nr_cpu_ids to include the boot CPU
authorMichael Ellerman <mpe@ellerman.id.au>
Wed, 14 Feb 2024 13:14:04 +0000 (00:14 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 14 Feb 2024 13:14:04 +0000 (00:14 +1100)
If nr_cpu_ids is too low to include the boot CPU adjust nr_cpu_ids
upward. Otherwise the kernel will BUG when trying to allocate a paca
for the boot CPU and fail to boot.

Cc: stable@vger.kernel.org
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20231229120107.2281153-2-mpe@ellerman.id.au
arch/powerpc/kernel/prom.c

index 58e8007..7736472 100644 (file)
@@ -381,6 +381,12 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
                        nr_cpu_ids);
        }
 
+       if (boot_cpuid >= nr_cpu_ids) {
+               set_nr_cpu_ids(min(CONFIG_NR_CPUS, ALIGN(boot_cpuid + 1, nthreads)));
+               pr_warn("Boot CPU %d >= nr_cpu_ids, adjusted nr_cpu_ids to %d\n",
+                       boot_cpuid, nr_cpu_ids);
+       }
+
        /*
         * PAPR defines "logical" PVR values for cpus that
         * meet various levels of the architecture: