summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/apic/apic.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index 9e2dd2b296cd..2b0faf86da1b 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -1586,9 +1586,6 @@ static void setup_local_APIC(void)
1586{ 1586{
1587 int cpu = smp_processor_id(); 1587 int cpu = smp_processor_id();
1588 unsigned int value; 1588 unsigned int value;
1589#ifdef CONFIG_X86_32
1590 int logical_apicid, ldr_apicid;
1591#endif
1592 1589
1593 if (disable_apic) { 1590 if (disable_apic) {
1594 disable_ioapic_support(); 1591 disable_ioapic_support();
@@ -1626,16 +1623,21 @@ static void setup_local_APIC(void)
1626 apic->init_apic_ldr(); 1623 apic->init_apic_ldr();
1627 1624
1628#ifdef CONFIG_X86_32 1625#ifdef CONFIG_X86_32
1629 /* 1626 if (apic->dest_logical) {
1630 * APIC LDR is initialized. If logical_apicid mapping was 1627 int logical_apicid, ldr_apicid;
1631 * initialized during get_smp_config(), make sure it matches the 1628
1632 * actual value. 1629 /*
1633 */ 1630 * APIC LDR is initialized. If logical_apicid mapping was
1634 logical_apicid = early_per_cpu(x86_cpu_to_logical_apicid, cpu); 1631 * initialized during get_smp_config(), make sure it matches
1635 ldr_apicid = GET_APIC_LOGICAL_ID(apic_read(APIC_LDR)); 1632 * the actual value.
1636 WARN_ON(logical_apicid != BAD_APICID && logical_apicid != ldr_apicid); 1633 */
1637 /* always use the value from LDR */ 1634 logical_apicid = early_per_cpu(x86_cpu_to_logical_apicid, cpu);
1638 early_per_cpu(x86_cpu_to_logical_apicid, cpu) = ldr_apicid; 1635 ldr_apicid = GET_APIC_LOGICAL_ID(apic_read(APIC_LDR));
1636 if (logical_apicid != BAD_APICID)
1637 WARN_ON(logical_apicid != ldr_apicid);
1638 /* Always use the value from LDR. */
1639 early_per_cpu(x86_cpu_to_logical_apicid, cpu) = ldr_apicid;
1640 }
1639#endif 1641#endif
1640 1642
1641 /* 1643 /*