aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa <gcosta@redhat.com>2008-03-19 13:26:02 -0400
committerIngo Molnar <mingo@elte.hu>2008-04-17 11:41:04 -0400
commit83f7eb9c674c1bcaad6ca258fdd7dd3b96465a62 (patch)
treeedc24f8ee55d3bab0a35d7dc72da17a1137cf880
parenta8db8453ff52609b14716361651ad10d2ab66682 (diff)
x86: merge native_smp_cpus_done
They look similar enough, and are merged. Only difference (zap_low_mapping for i386) is inside ifdef Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/x86/kernel/smpboot.c21
-rw-r--r--arch/x86/kernel/smpboot_32.c21
-rw-r--r--arch/x86/kernel/smpboot_64.c18
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
1019void __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
1021void remove_siblinginfo(int cpu) 1040void 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
219extern void impress_friends(void);
220extern void smp_checks(void);
221
222void __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
216extern void impress_friends(void);
217extern void smp_checks(void);
218
219/*
220 * Finish the SMP boot.
221 */
222void __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}