]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: smp: Do not mark secondary CPUs possible under nosmp
authorPengjie Zhang <zhangpengjie2@huawei.com>
Wed, 6 May 2026 09:08:51 +0000 (17:08 +0800)
committerWill Deacon <will@kernel.org>
Tue, 19 May 2026 11:17:09 +0000 (12:17 +0100)
Under nosmp (maxcpus=0), arm64 never brings up secondary CPUs.

smp_prepare_cpus() already treats this as a UP-mandated boot and returns
before marking secondary CPUs present. However, smp_init_cpus() may still
enumerate firmware-described secondary CPUs and mark them possible before
that point.

Avoid marking secondary CPUs possible when nosmp/maxcpus=0 is in effect,
so that cpu_possible_mask reflects the nosmp boot policy for this boot.

Suggested-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Pengjie Zhang <zhangpengjie2@huawei.com>
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/smp.c

index 1aa324104afb440951e0b5da1bd9d6ad84aa2f72..1b63846f646a45e2665f50b0583ba6480988504f 100644 (file)
@@ -745,15 +745,21 @@ void __init smp_init_cpus(void)
        else
                acpi_parse_and_init_cpus();
 
-       if (cpu_count > nr_cpu_ids)
-               pr_warn("Number of cores (%d) exceeds configured maximum of %u - clipping\n",
-                       cpu_count, nr_cpu_ids);
-
        if (!bootcpu_valid) {
                pr_err("missing boot CPU MPIDR, not enabling secondaries\n");
                return;
        }
 
+       /*
+        * For the nosmp/maxcpus=0 case, do not mark the secondary CPUs
+        * possible.
+        */
+       if (!setup_max_cpus)
+               return;
+
+       if (cpu_count > nr_cpu_ids)
+               pr_warn("Number of cores (%d) exceeds configured maximum of %u - clipping\n",
+                       cpu_count, nr_cpu_ids);
        /*
         * We need to set the cpu_logical_map entries before enabling
         * the cpus so that cpu processor description entries (DT cpu nodes