Hi all,


​While using maxcpus=n we can limit the number of boot time cpus to n and later we can bring them online (according to Documentation/cpu-hotplug.txt). 

However current implementation doesn't allow to bring more cpus online than it was specified with maxcpus argument.


As far as I can understand the decision of bringing up cpus on is based on cpu_present mask which is set accordingly to maxcpus argument while kernel start up at the smp_prepare_cpus(max_cpus) function (file arch/aarm64/kernel/smp.c). At the same time the cpu_possible mask contains all the cpus visible to kernel (info provided by acpi) - for my system they are all there.


Could anyone clarify why it was implemented in that way (e.g. for x86 architecture there is no such limitation; the smp_prepare_cpus(max_cpus) function ignores the max_cpus argument) ? Was it implemented intentionally to prevent some issues/bugs?



WBR,
Vadim Lomovtsev