RISC-V: Support nr_cpus command line option.
authorAtish Patra <atish.patra@wdc.com>
Wed, 24 Apr 2019 21:48:00 +0000 (14:48 -0700)
committerPalmer Dabbelt <palmer@sifive.com>
Fri, 17 May 2019 03:42:04 +0000 (20:42 -0700)
If nr_cpus command line option is set, maximum possible cpu should be
set to that value.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
arch/riscv/kernel/smpboot.c

index a8ad200581aa1b2a7ee58eed7dc94e053ba8e059..7a0b62252524547780407e219ff0fb418be00dea 100644 (file)
@@ -84,11 +84,19 @@ void __init setup_smp(void)
                }
 
                cpuid_to_hartid_map(cpuid) = hart;
-               set_cpu_possible(cpuid, true);
                cpuid++;
        }
 
        BUG_ON(!found_boot_cpu);
+
+       if (cpuid > nr_cpu_ids)
+               pr_warn("Total number of cpus [%d] is greater than nr_cpus option value [%d]\n",
+                       cpuid, nr_cpu_ids);
+
+       for (cpuid = 1; cpuid < nr_cpu_ids; cpuid++) {
+               if (cpuid_to_hartid_map(cpuid) != INVALID_HARTID)
+                       set_cpu_possible(cpuid, true);
+       }
 }
 
 int __cpu_up(unsigned int cpu, struct task_struct *tidle)