aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic.c
diff options
context:
space:
mode:
authorMike Travis <travis@sgi.com>2008-12-17 18:21:39 -0500
committerIngo Molnar <mingo@elte.hu>2008-12-18 06:08:05 -0500
commit3b11ce7f542e415c90267b4482d4611410b468e6 (patch)
tree26366b9f25af830b71c78504bbadd94896a8b82a /arch/x86/kernel/apic.c
parenta775a38b1353161a6d7af86b667d6523c12c1a37 (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.c20
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)
1819void __cpuinit generic_processor_info(int apicid, int version) 1819void __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) {