docs: kernel-parameter: Improve the description of nr_cpus and maxcpus
authorBaoquan He <bhe@redhat.com>
Wed, 24 Aug 2016 05:06:45 +0000 (13:06 +0800)
committerJonathan Corbet <corbet@lwn.net>
Thu, 25 Aug 2016 19:14:53 +0000 (13:14 -0600)
From the old description people still can't get what's the exact
difference between nr_cpus and maxcpus. Especially in kdump kernel
nr_cpus is always suggested if it's implemented in the ARCH. The
reason is nr_cpus is used to limit the max number of possible cpu
in system, the sum of already plugged cpus and hot plug cpus can't
exceed its value. However maxcpus is used to limit how many cpus
are allowed to be brought up during bootup.

Signed-off-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Documentation/kernel-parameters.txt

index 20557efa8bce67ff61486bb7eb22158153ba89e2..1fa28092ec0088f90a40f4f23a5416daa3b955bc 100644 (file)
@@ -2161,10 +2161,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        than or equal to this physical address is ignored.
 
        maxcpus=        [SMP] Maximum number of processors that an SMP kernel
-                       should make use of.  maxcpus=n : n >= 0 limits the
-                       kernel to using 'n' processors.  n=0 is a special case,
-                       it is equivalent to "nosmp", which also disables
-                       the IO APIC.
+                       will bring up during bootup.  maxcpus=n : n >= 0 limits
+                       the kernel to bring up 'n' processors. Surely after
+                       bootup you can bring up the other plugged cpu by executing
+                       "echo 1 > /sys/devices/system/cpu/cpuX/online". So maxcpus
+                       only takes effect during system bootup.
+                       While n=0 is a special case, it is equivalent to "nosmp",
+                       which also disables the IO APIC.
 
        max_loop=       [LOOP] The number of loop block devices that get
        (loop.max_loop) unconditionally pre-created at init time. The default
@@ -2773,9 +2776,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 
        nr_cpus=        [SMP] Maximum number of processors that an SMP kernel
                        could support.  nr_cpus=n : n >= 1 limits the kernel to
-                       supporting 'n' processors. Later in runtime you can not
-                       use hotplug cpu feature to put more cpu back to online.
-                       just like you compile the kernel NR_CPUS=n
+                       support 'n' processors. It could be larger than the
+                       number of already plugged CPU during bootup, later in
+                       runtime you can physically add extra cpu until it reaches
+                       n. So during boot up some boot time memory for per-cpu
+                       variables need be pre-allocated for later physical cpu
+                       hot plugging.
 
        nr_uarts=       [SERIAL] maximum number of UARTs to be registered.