Sorry guys, I forgot to add architecture - the question is about ARM64 implementation.
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?