diff options
author | Mike Travis <travis@sgi.com> | 2008-12-17 18:21:39 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-18 06:08:05 -0500 |
commit | 3b11ce7f542e415c90267b4482d4611410b468e6 (patch) | |
tree | 26366b9f25af830b71c78504bbadd94896a8b82a /arch/x86/kernel/apic.c | |
parent | a775a38b1353161a6d7af86b667d6523c12c1a37 (diff) |
x86: use possible_cpus=NUM to extend the possible cpus allowed
Impact: add new boot parameter
Use possible_cpus=NUM kernel parameter to extend the number of possible
cpus.
The ability to HOTPLUG ON cpus that are "possible" but not "present" is
dealt with in a later patch.
Signed-off-by: Mike Travis <travis@sgi.com>
Diffstat (limited to 'arch/x86/kernel/apic.c')
-rw-r--r-- | arch/x86/kernel/apic.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/arch/x86/kernel/apic.c b/arch/x86/kernel/apic.c index 93cf2d13f335..f7a32a3beb2f 100644 --- a/arch/x86/kernel/apic.c +++ b/arch/x86/kernel/apic.c | |||
@@ -1819,28 +1819,32 @@ void disconnect_bsp_APIC(int virt_wire_setup) | |||
1819 | void __cpuinit generic_processor_info(int apicid, int version) | 1819 | void __cpuinit generic_processor_info(int apicid, int version) |
1820 | { | 1820 | { |
1821 | int cpu; | 1821 | int cpu; |
1822 | cpumask_t tmp_map; | ||
1823 | 1822 | ||
1824 | /* | 1823 | /* |
1825 | * Validate version | 1824 | * Validate version |
1826 | */ | 1825 | */ |
1827 | if (version == 0x0) { | 1826 | if (version == 0x0) { |
1828 | pr_warning("BIOS bug, APIC version is 0 for CPU#%d! " | 1827 | pr_warning("BIOS bug, APIC version is 0 for CPU#%d! " |
1829 | "fixing up to 0x10. (tell your hw vendor)\n", | 1828 | "fixing up to 0x10. (tell your hw vendor)\n", |
1830 | version); | 1829 | version); |
1831 | version = 0x10; | 1830 | version = 0x10; |
1832 | } | 1831 | } |
1833 | apic_version[apicid] = version; | 1832 | apic_version[apicid] = version; |
1834 | 1833 | ||
1835 | if (num_processors >= NR_CPUS) { | 1834 | if (num_processors >= nr_cpu_ids) { |
1836 | pr_warning("WARNING: NR_CPUS limit of %i reached." | 1835 | int max = nr_cpu_ids; |
1837 | " Processor ignored.\n", NR_CPUS); | 1836 | int thiscpu = max + disabled_cpus; |
1837 | |||
1838 | pr_warning( | ||
1839 | "ACPI: NR_CPUS/possible_cpus limit of %i reached." | ||
1840 | " Processor %d/0x%x ignored.\n", max, thiscpu, apicid); | ||
1841 | |||
1842 | disabled_cpus++; | ||
1838 | return; | 1843 | return; |
1839 | } | 1844 | } |
1840 | 1845 | ||
1841 | num_processors++; | 1846 | num_processors++; |
1842 | cpus_complement(tmp_map, cpu_present_map); | 1847 | cpu = cpumask_next_zero(-1, cpu_present_mask); |
1843 | cpu = first_cpu(tmp_map); | ||
1844 | 1848 | ||
1845 | physid_set(apicid, phys_cpu_present_map); | 1849 | physid_set(apicid, phys_cpu_present_map); |
1846 | if (apicid == boot_cpu_physical_apicid) { | 1850 | if (apicid == boot_cpu_physical_apicid) { |