Re: [PATCH 3/4] cpumask: use maxcpus=NUM to extend the cpu limitas well as restrict the limit

From: Mike Travis
Date: Thu Dec 11 2008 - 13:19:59 EST


Heiko Carstens wrote:
> On Thu, Dec 11, 2008 at 03:28:09AM -0800, Mike Travis wrote:
>> Impact: allow adding additional cpus.
>>
>> Use maxcpus=NUM kernel parameter to extend the number of possible cpus as well
>> as (currently) limit them. Any cpus >= number of present cpus will disabled.
>>
>> The ability to HOTPLUG ON cpus that are "possible" but not "present" is
>> dealt with in a later patch.
>
> Hm.. documentation/kernel-parameters.txt says:
>
> 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.
>
> but documentation/cpu-hotplug.txt says:
>
> maxcpus=n Restrict boot time cpus to n. Say if you have 4 cpus, using
> maxcpus=2 will only boot 2. You can choose to bring the
> other cpus later online, read FAQ's for more info.
>
> It used to be (implementation wise) that maxcpus doesn't influence the number
> of possible cpus but just indicated how many cpus were brought online at startup
> of the kernel. Which is what cpu-hotplug.txt describes.
>
> Other present cpus would appear offline and could be brought online later.
>
> For s390 I added the possible_cpus kernel parameter back then, since my
> understanding back then was that maxcpus doesn't and shouldn't influence the
> number of possible cpus:
>
> possible_cpus=n [s390 only] use this to set hotpluggable cpus.
> This option sets possible_cpus bits in
> cpu_possible_map. Thus keeping the numbers of bits set
> constant even if the machine gets rebooted.
>
> Dunno... it all looks like a mess ;)

Hmm, I hadn't noticed that. For a while the X86 devel kernel had an
"additional_cpus=n" parameter, which was also a bit confusing. Say you
wanted, 64 total, you had to give the increment over how many you already
had [e.g., (want)64 - (have)16 = (additional_cpus=)48.]

I just figured that re-using the same kernel parameter was better than adding
another. But I'm willing to go either way.

Btw, I did alter the Documentation/kernel-parameters.txt file:

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. On [X86] maxcpus can also be used to
extend the number of possible cpus to overcome ACPI
tables that do not indicate disabled cpus, as well as
allow for additional cpus to be HOT PLUGGED in.
Format: <0-NR_CPUS>

In modifying the code, I could not find any arch-specific instances and the only
general case was in the 3 references in init/main.c, so I figured it was pretty
safe to use.

Thanks,
Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/