|
@@ -1468,7 +1468,7 @@ static void setup_local_APIC(void)
|
|
|
int cpu = smp_processor_id();
|
|
|
unsigned int value;
|
|
|
#ifdef CONFIG_X86_32
|
|
|
- int i;
|
|
|
+ int logical_apicid, ldr_apicid;
|
|
|
#endif
|
|
|
|
|
|
|
|
@@ -1507,11 +1507,11 @@ static void setup_local_APIC(void)
|
|
|
* initialized during get_smp_config(), make sure it matches the
|
|
|
* actual value.
|
|
|
*/
|
|
|
- i = early_per_cpu(x86_cpu_to_logical_apicid, cpu);
|
|
|
- WARN_ON(i != BAD_APICID && i != logical_smp_processor_id());
|
|
|
+ logical_apicid = early_per_cpu(x86_cpu_to_logical_apicid, cpu);
|
|
|
+ ldr_apicid = GET_APIC_LOGICAL_ID(apic_read(APIC_LDR));
|
|
|
+ WARN_ON(logical_apicid != BAD_APICID && logical_apicid != ldr_apicid);
|
|
|
/* always use the value from LDR */
|
|
|
- early_per_cpu(x86_cpu_to_logical_apicid, cpu) =
|
|
|
- logical_smp_processor_id();
|
|
|
+ early_per_cpu(x86_cpu_to_logical_apicid, cpu) = ldr_apicid;
|
|
|
#endif
|
|
|
|
|
|
/*
|