diff options
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/apic_32.c | 7 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot_32.c | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/arch/x86/kernel/apic_32.c b/arch/x86/kernel/apic_32.c index 80c81c76625a..6f506020bd7d 100644 --- a/arch/x86/kernel/apic_32.c +++ b/arch/x86/kernel/apic_32.c | |||
@@ -1064,9 +1064,13 @@ void __cpuinit setup_local_APIC(void) | |||
1064 | if (!integrated) /* 82489DX */ | 1064 | if (!integrated) /* 82489DX */ |
1065 | value |= APIC_LVT_LEVEL_TRIGGER; | 1065 | value |= APIC_LVT_LEVEL_TRIGGER; |
1066 | apic_write_around(APIC_LVT1, value); | 1066 | apic_write_around(APIC_LVT1, value); |
1067 | } | ||
1067 | 1068 | ||
1068 | lapic_setup_esr(); | 1069 | void __cpuinit end_local_APIC_setup(void) |
1070 | { | ||
1071 | unsigned long value; | ||
1069 | 1072 | ||
1073 | lapic_setup_esr(); | ||
1070 | /* Disable the local apic timer */ | 1074 | /* Disable the local apic timer */ |
1071 | value = apic_read(APIC_LVTT); | 1075 | value = apic_read(APIC_LVTT); |
1072 | value |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR); | 1076 | value |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR); |
@@ -1256,6 +1260,7 @@ int __init APIC_init_uniprocessor(void) | |||
1256 | 1260 | ||
1257 | setup_local_APIC(); | 1261 | setup_local_APIC(); |
1258 | 1262 | ||
1263 | end_local_APIC_setup(); | ||
1259 | #ifdef CONFIG_X86_IO_APIC | 1264 | #ifdef CONFIG_X86_IO_APIC |
1260 | if (smp_found_config) | 1265 | if (smp_found_config) |
1261 | if (!skip_ioapic_setup && nr_ioapics) | 1266 | if (!skip_ioapic_setup && nr_ioapics) |
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index c03596e11db8..dbfaeb30a69a 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c | |||
@@ -161,6 +161,7 @@ static void __cpuinit smp_callin(void) | |||
161 | Dprintk("CALLIN, before setup_local_APIC().\n"); | 161 | Dprintk("CALLIN, before setup_local_APIC().\n"); |
162 | smp_callin_clear_local_apic(); | 162 | smp_callin_clear_local_apic(); |
163 | setup_local_APIC(); | 163 | setup_local_APIC(); |
164 | end_local_APIC_setup(); | ||
164 | map_cpu_to_logical_apicid(); | 165 | map_cpu_to_logical_apicid(); |
165 | 166 | ||
166 | /* | 167 | /* |
@@ -780,6 +781,7 @@ static int __init smp_sanity_check(unsigned max_cpus) | |||
780 | printk(KERN_INFO "activating minimal APIC for NMI watchdog use.\n"); | 781 | printk(KERN_INFO "activating minimal APIC for NMI watchdog use.\n"); |
781 | connect_bsp_APIC(); | 782 | connect_bsp_APIC(); |
782 | setup_local_APIC(); | 783 | setup_local_APIC(); |
784 | end_local_APIC_setup(); | ||
783 | } | 785 | } |
784 | return -1; | 786 | return -1; |
785 | } | 787 | } |
@@ -813,6 +815,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus) | |||
813 | 815 | ||
814 | connect_bsp_APIC(); | 816 | connect_bsp_APIC(); |
815 | setup_local_APIC(); | 817 | setup_local_APIC(); |
818 | end_local_APIC_setup(); | ||
816 | map_cpu_to_logical_apicid(); | 819 | map_cpu_to_logical_apicid(); |
817 | 820 | ||
818 | 821 | ||