summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa2008-03-19 18:26:02 +0100
committerIngo Molnar2008-04-17 17:41:04 +0200
commit83f7eb9c674c1bcaad6ca258fdd7dd3b96465a62 (patch)
treeedc24f8ee55d3bab0a35d7dc72da17a1137cf880
parentx86: merge smp_prepare_boot_cpu (diff)
downloadkernel-qcow2-linux-83f7eb9c674c1bcaad6ca258fdd7dd3b96465a62.tar.gz
kernel-qcow2-linux-83f7eb9c674c1bcaad6ca258fdd7dd3b96465a62.tar.xz
kernel-qcow2-linux-83f7eb9c674c1bcaad6ca258fdd7dd3b96465a62.zip
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:
apic_write(APIC_ESR, 0);
apic_read(APIC_ESR);
-
/*
* Starting actual IPI sequence...
*/
@@ -1017,6 +1016,26 @@ void __init native_smp_prepare_boot_cpu(void)
per_cpu(cpu_state, me) = CPU_ONLINE;
}
+void __init native_smp_cpus_done(unsigned int max_cpus)
+{
+ /*
+ * Cleanup possible dangling ends...
+ */
+ smpboot_restore_warm_reset_vector();
+
+ Dprintk("Boot done.\n");
+
+ impress_friends();
+ smp_checks();
+#ifdef CONFIG_X86_IO_APIC
+ setup_ioapic_dest();
+#endif
+ check_nmi_watchdog();
+#ifdef CONFIG_X86_32
+ zap_low_mappings();
+#endif
+}
+
#ifdef CONFIG_HOTPLUG_CPU
void remove_siblinginfo(int cpu)
{
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)
mb();
smp_boot_cpus(max_cpus);
}
-
-extern void impress_friends(void);
-extern void smp_checks(void);
-
-void __init native_smp_cpus_done(unsigned int max_cpus)
-{
- /*
- * Cleanup possible dangling ends...
- */
- smpboot_restore_warm_reset_vector();
-
- Dprintk("Boot done.\n");
-
- impress_friends();
- smp_checks();
-#ifdef CONFIG_X86_IO_APIC
- setup_ioapic_dest();
-#endif
- check_nmi_watchdog();
- zap_low_mappings();
-}
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)
printk(KERN_INFO "CPU%d: ", 0);
print_cpu_info(&cpu_data(0));
}
-
-extern void impress_friends(void);
-extern void smp_checks(void);
-
-/*
- * Finish the SMP boot.
- */
-void __init native_smp_cpus_done(unsigned int max_cpus)
-{
- smpboot_restore_warm_reset_vector();
-
- Dprintk("Boot done.\n");
-
- impress_friends();
- smp_checks();
- setup_ioapic_dest();
- check_nmi_watchdog();
-}