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
Sorry guys, I forgot to add architecture - the question is about ARM64 implementation.
WBR, Vadim Lomovtsev
________________________________ From: linaro-kernel-bounces@lists.linaro.org linaro-kernel-bounces@lists.linaro.org on behalf of Lomovtsev, Vadim vadim.lomovtsev@auriga.com Sent: Thursday, February 26, 2015 17:05 To: linaro-kernel@lists.linaro.org Subject: [cpu hot-plug] kernel started with maxcpus argument fordbids to bring more CPUs online
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
linaro-kernel@lists.linaro.org