x86: provide an end_local_APIC_setup function
authorGlauber de Oliveira Costa <gcosta@redhat.com>
Wed, 19 Mar 2008 17:25:49 +0000 (14:25 -0300)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:41:02 +0000 (17:41 +0200)
It splits setup_local_APIC in two, providing a function corresponding
to the ending part of it. As a side effect, smp_callin looks the same
between i386 and x86_64.

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/apic_32.c
arch/x86/kernel/smpboot_32.c

index 80c81c7..6f50602 100644 (file)
@@ -1064,9 +1064,13 @@ void __cpuinit setup_local_APIC(void)
        if (!integrated)                /* 82489DX */
                value |= APIC_LVT_LEVEL_TRIGGER;
        apic_write_around(APIC_LVT1, value);
+}
 
-       lapic_setup_esr();
+void __cpuinit end_local_APIC_setup(void)
+{
+       unsigned long value;
 
+       lapic_setup_esr();
        /* Disable the local apic timer */
        value = apic_read(APIC_LVTT);
        value |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
@@ -1256,6 +1260,7 @@ int __init APIC_init_uniprocessor(void)
 
        setup_local_APIC();
 
+       end_local_APIC_setup();
 #ifdef CONFIG_X86_IO_APIC
        if (smp_found_config)
                if (!skip_ioapic_setup && nr_ioapics)
index c03596e..dbfaeb3 100644 (file)
@@ -161,6 +161,7 @@ static void __cpuinit smp_callin(void)
        Dprintk("CALLIN, before setup_local_APIC().\n");
        smp_callin_clear_local_apic();
        setup_local_APIC();
+       end_local_APIC_setup();
        map_cpu_to_logical_apicid();
 
        /*
@@ -780,6 +781,7 @@ static int __init smp_sanity_check(unsigned max_cpus)
                        printk(KERN_INFO "activating minimal APIC for NMI watchdog use.\n");
                        connect_bsp_APIC();
                        setup_local_APIC();
+                       end_local_APIC_setup();
                }
                return -1;
        }
@@ -813,6 +815,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
 
        connect_bsp_APIC();
        setup_local_APIC();
+       end_local_APIC_setup();
        map_cpu_to_logical_apicid();