|
@@ -1925,17 +1925,6 @@ void __cpuinit generic_processor_info(int apicid, int version)
|
|
|
{
|
|
|
int cpu;
|
|
|
|
|
|
- /*
|
|
|
- * Validate version
|
|
|
- */
|
|
|
- if (version == 0x0) {
|
|
|
- pr_warning("BIOS bug, APIC version is 0 for CPU#%d! "
|
|
|
- "fixing up to 0x10. (tell your hw vendor)\n",
|
|
|
- version);
|
|
|
- version = 0x10;
|
|
|
- }
|
|
|
- apic_version[apicid] = version;
|
|
|
-
|
|
|
if (num_processors >= nr_cpu_ids) {
|
|
|
int max = nr_cpu_ids;
|
|
|
int thiscpu = max + disabled_cpus;
|
|
@@ -1949,22 +1938,34 @@ void __cpuinit generic_processor_info(int apicid, int version)
|
|
|
}
|
|
|
|
|
|
num_processors++;
|
|
|
- cpu = cpumask_next_zero(-1, cpu_present_mask);
|
|
|
-
|
|
|
- if (version != apic_version[boot_cpu_physical_apicid])
|
|
|
- WARN_ONCE(1,
|
|
|
- "ACPI: apic version mismatch, bootcpu: %x cpu %d: %x\n",
|
|
|
- apic_version[boot_cpu_physical_apicid], cpu, version);
|
|
|
-
|
|
|
- physid_set(apicid, phys_cpu_present_map);
|
|
|
if (apicid == boot_cpu_physical_apicid) {
|
|
|
/*
|
|
|
* x86_bios_cpu_apicid is required to have processors listed
|
|
|
* in same order as logical cpu numbers. Hence the first
|
|
|
* entry is BSP, and so on.
|
|
|
+ * boot_cpu_init() already hold bit 0 in cpu_present_mask
|
|
|
+ * for BSP.
|
|
|
*/
|
|
|
cpu = 0;
|
|
|
+ } else
|
|
|
+ cpu = cpumask_next_zero(-1, cpu_present_mask);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Validate version
|
|
|
+ */
|
|
|
+ if (version == 0x0) {
|
|
|
+ pr_warning("BIOS bug: APIC version is 0 for CPU %d/0x%x, fixing up to 0x10\n",
|
|
|
+ cpu, apicid);
|
|
|
+ version = 0x10;
|
|
|
}
|
|
|
+ apic_version[apicid] = version;
|
|
|
+
|
|
|
+ if (version != apic_version[boot_cpu_physical_apicid]) {
|
|
|
+ pr_warning("BIOS bug: APIC version mismatch, boot CPU: %x, CPU %d: version %x\n",
|
|
|
+ apic_version[boot_cpu_physical_apicid], cpu, version);
|
|
|
+ }
|
|
|
+
|
|
|
+ physid_set(apicid, phys_cpu_present_map);
|
|
|
if (apicid > max_physical_apicid)
|
|
|
max_physical_apicid = apicid;
|
|
|
|