x86: merge smp_prepare_boot_cpu
authorGlauber de Oliveira Costa <gcosta@redhat.com>
Wed, 19 Mar 2008 17:26:01 +0000 (14:26 -0300)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:41:03 +0000 (17:41 +0200)
it is practically the same between arches now, so it is
moved to smpboot.c. Minor differences (gdt initialization)
live inside an ifdef

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

index a36ae2785c4872bf45b901c2fa0eaba7d514869d..b214d8dcc07a91d54722196cb977b2a096c09c78 100644 (file)
@@ -24,6 +24,9 @@
 #include <mach_wakecpu.h>
 #include <smpboot_hooks.h>
 
+/* State of each CPU */
+DEFINE_PER_CPU(int, cpu_state) = { 0 };
+
 /* Store all idle threads, this can be reused instead of creating
 * a new thread. Also avoids complicated thread destroy functionality
 * for idle threads.
@@ -999,6 +1002,21 @@ int __cpuinit native_cpu_up(unsigned int cpu)
        return 0;
 }
 
+/*
+ * Early setup to make printk work.
+ */
+void __init native_smp_prepare_boot_cpu(void)
+{
+       int me = smp_processor_id();
+#ifdef CONFIG_X86_32
+       init_gdt(me);
+       switch_to_new_gdt();
+#endif
+       /* already set me in cpu_online_map in boot_cpu_init() */
+       cpu_set(me, cpu_callout_map);
+       per_cpu(cpu_state, me) = CPU_ONLINE;
+}
+
 #ifdef CONFIG_HOTPLUG_CPU
 void remove_siblinginfo(int cpu)
 {
index 77b045cfebd450c02388a8c044a219a2a8c765ee..5d27b1db6c26ffd3ad76429a2b75c8448bbea855 100644 (file)
@@ -77,9 +77,6 @@ u8 apicid_2_node[MAX_APICID];
 extern void map_cpu_to_logical_apicid(void);
 extern void unmap_cpu_to_logical_apicid(int cpu);
 
-/* State of each CPU. */
-DEFINE_PER_CPU(int, cpu_state) = { 0 };
-
 #ifdef CONFIG_HOTPLUG_CPU
 void cpu_exit_clear(void)
 {
@@ -219,17 +216,6 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
        smp_boot_cpus(max_cpus);
 }
 
-void __init native_smp_prepare_boot_cpu(void)
-{
-       unsigned int cpu = smp_processor_id();
-
-       init_gdt(cpu);
-       switch_to_new_gdt();
-
-       cpu_set(cpu, cpu_callout_map);
-       __get_cpu_var(cpu_state) = CPU_ONLINE;
-}
-
 extern void impress_friends(void);
 extern void smp_checks(void);
 
index 60cd8cf1b07303b42f1667d4cb2c65794bf5da88..f77299b0639eb01a352752015d8139c425b30ce6 100644 (file)
@@ -68,9 +68,6 @@
 /* Set when the idlers are all forked */
 int smp_threads_ready;
 
-/* State of each CPU */
-DEFINE_PER_CPU(int, cpu_state) = { 0 };
-
 cycles_t cacheflush_time;
 unsigned long cache_decay_ticks;
 
@@ -216,17 +213,6 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
        print_cpu_info(&cpu_data(0));
 }
 
-/*
- * Early setup to make printk work.
- */
-void __init native_smp_prepare_boot_cpu(void)
-{
-       int me = smp_processor_id();
-       /* already set me in cpu_online_map in boot_cpu_init() */
-       cpu_set(me, cpu_callout_map);
-       per_cpu(cpu_state, me) = CPU_ONLINE;
-}
-
 extern void impress_friends(void);
 extern void smp_checks(void);