aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic.c
diff options
context:
space:
mode:
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) {