diff options
-rw-r--r-- | arch/x86/kernel/smpboot.c | 21 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot_32.c | 21 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot_64.c | 18 |
3 files changed, 20 insertions, 40 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index b214d8dcc07a..26118b4a1c38 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -880,7 +880,6 @@ do_rest: | |||
880 | apic_write(APIC_ESR, 0); | 880 | apic_write(APIC_ESR, 0); |
881 | apic_read(APIC_ESR); | 881 | apic_read(APIC_ESR); |
882 | 882 | ||
883 | |||
884 | /* | 883 | /* |
885 | * Starting actual IPI sequence... | 884 | * Starting actual IPI sequence... |
886 | */ | 885 | */ |
@@ -1017,6 +1016,26 @@ void __init native_smp_prepare_boot_cpu(void) | |||
1017 | per_cpu(cpu_state, me) = CPU_ONLINE; | 1016 | per_cpu(cpu_state, me) = CPU_ONLINE; |
1018 | } | 1017 | } |
1019 | 1018 | ||
1019 | void __init native_smp_cpus_done(unsigned int max_cpus) | ||
1020 | { | ||
1021 | /* | ||
1022 | * Cleanup possible dangling ends... | ||
1023 | */ | ||
1024 | smpboot_restore_warm_reset_vector(); | ||
1025 | |||
1026 | Dprintk("Boot done.\n"); | ||
1027 | |||
1028 | impress_friends(); | ||
1029 | smp_checks(); | ||
1030 | #ifdef CONFIG_X86_IO_APIC | ||
1031 | setup_ioapic_dest(); | ||
1032 | #endif | ||
1033 | check_nmi_watchdog(); | ||
1034 | #ifdef CONFIG_X86_32 | ||
1035 | zap_low_mappings(); | ||
1036 | #endif | ||
1037 | } | ||
1038 | |||
1020 | #ifdef CONFIG_HOTPLUG_CPU | 1039 | #ifdef CONFIG_HOTPLUG_CPU |
1021 | void remove_siblinginfo(int cpu) | 1040 | void remove_siblinginfo(int cpu) |
1022 | { | 1041 | { |
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index 5d27b1db6c26..75fb5064af66 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c | |||
@@ -215,24 +215,3 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus) | |||
215 | mb(); | 215 | mb(); |
216 | smp_boot_cpus(max_cpus); | 216 | smp_boot_cpus(max_cpus); |
217 | } | 217 | } |
218 | |||
219 | extern void impress_friends(void); | ||
220 | extern void smp_checks(void); | ||
221 | |||
222 | void __init native_smp_cpus_done(unsigned int max_cpus) | ||
223 | { | ||
224 | /* | ||
225 | * Cleanup possible dangling ends... | ||
226 | */ | ||
227 | smpboot_restore_warm_reset_vector(); | ||
228 | |||
229 | Dprintk("Boot done.\n"); | ||
230 | |||
231 | impress_friends(); | ||
232 | smp_checks(); | ||
233 | #ifdef CONFIG_X86_IO_APIC | ||
234 | setup_ioapic_dest(); | ||
235 | #endif | ||
236 | check_nmi_watchdog(); | ||
237 | zap_low_mappings(); | ||
238 | } | ||
diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c index f77299b0639e..f4363a38d079 100644 --- a/arch/x86/kernel/smpboot_64.c +++ b/arch/x86/kernel/smpboot_64.c | |||
@@ -212,21 +212,3 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus) | |||
212 | printk(KERN_INFO "CPU%d: ", 0); | 212 | printk(KERN_INFO "CPU%d: ", 0); |
213 | print_cpu_info(&cpu_data(0)); | 213 | print_cpu_info(&cpu_data(0)); |
214 | } | 214 | } |
215 | |||
216 | extern void impress_friends(void); | ||
217 | extern void smp_checks(void); | ||
218 | |||
219 | /* | ||
220 | * Finish the SMP boot. | ||
221 | */ | ||
222 | void __init native_smp_cpus_done(unsigned int max_cpus) | ||
223 | { | ||
224 | smpboot_restore_warm_reset_vector(); | ||
225 | |||
226 | Dprintk("Boot done.\n"); | ||
227 | |||
228 | impress_friends(); | ||
229 | smp_checks(); | ||
230 | setup_ioapic_dest(); | ||
231 | check_nmi_watchdog(); | ||
232 | } | ||