Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f8b1138 authored by Ashok Raj's avatar Ashok Raj Committed by Tony Luck
Browse files

[IA64] Count disabled cpus as potential hot-pluggable CPUs



Minor updates to earlier patch.
- Added to documentation to add ia64 as well.
- Minor clarification on how to use disabled cpus
- used plain max instead of max_t per Andew Morton.

Signed-off-by: default avatarAshok Raj <ashok.raj@intel.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 6f6d7582
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -44,10 +44,20 @@ 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.

additional_cpus=n	[x86_64 only] use this to limit hotpluggable cpus.
                        This option sets
additional_cpus*=n	Use this to limit hotpluggable cpus. This option sets
			cpu_possible_map = cpu_present_map + additional_cpus

(*) Option valid only for following architectures
- x86_64, ia64

ia64 and x86_64 use the number of disabled local apics in ACPI tables MADT
to determine the number of potentially hot-pluggable cpus. The implementation
should only rely on this to count the #of cpus, but *MUST* not rely on the
apicid values in those tables for disabled apics. In the event BIOS doesnt
mark such hot-pluggable cpus as disabled entries, one could use this
parameter "additional_cpus=x" to represent those cpus in the cpu_possible_map.


CPU maps and such
-----------------
[More on cpumaps and primitive to manipulate, please check
+8 −11
Original line number Diff line number Diff line
@@ -794,24 +794,21 @@ __init void prefill_possible_map(void)
	int possible, disabled_cpus;

	disabled_cpus = total_cpus - available_cpus;

 	if (additional_cpus == -1) {
 		if (disabled_cpus > 0) {
 			possible = total_cpus;
 		if (disabled_cpus > 0)
			additional_cpus = disabled_cpus;
		}
 		else {
			possible = available_cpus;
 		else
			additional_cpus = 0;
 	}
 	} else {

	possible = available_cpus + additional_cpus;
	}

	if (possible > NR_CPUS)
		possible = NR_CPUS;

	printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
		possible,
	        max_t(int, additional_cpus, 0));
		possible, max((possible - available_cpus), 0));

	for (i = 0; i < possible; i++)
		cpu_set(i, cpu_possible_map);