|
@@ -644,9 +644,16 @@ struct i386_pda boot_pda = {
|
|
|
.pcurrent = &init_task,
|
|
|
};
|
|
|
|
|
|
-/* Common CPU init for both boot and secondary CPUs */
|
|
|
-static void __cpuinit _cpu_init(int cpu, struct task_struct *curr)
|
|
|
+/*
|
|
|
+ * cpu_init() initializes state that is per-CPU. Some data is already
|
|
|
+ * initialized (naturally) in the bootstrap process, such as the GDT
|
|
|
+ * and IDT. We reload them nevertheless, this function acts as a
|
|
|
+ * 'CPU state barrier', nothing should get across.
|
|
|
+ */
|
|
|
+void __cpuinit cpu_init(void)
|
|
|
{
|
|
|
+ int cpu = smp_processor_id();
|
|
|
+ struct task_struct *curr = current;
|
|
|
struct tss_struct * t = &per_cpu(init_tss, cpu);
|
|
|
struct thread_struct *thread = &curr->thread;
|
|
|
|
|
@@ -706,29 +713,6 @@ static void __cpuinit _cpu_init(int cpu, struct task_struct *curr)
|
|
|
mxcsr_feature_mask_init();
|
|
|
}
|
|
|
|
|
|
-/* Entrypoint to initialize secondary CPU */
|
|
|
-void __cpuinit secondary_cpu_init(void)
|
|
|
-{
|
|
|
- int cpu = smp_processor_id();
|
|
|
- struct task_struct *curr = current;
|
|
|
-
|
|
|
- _cpu_init(cpu, curr);
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * cpu_init() initializes state that is per-CPU. Some data is already
|
|
|
- * initialized (naturally) in the bootstrap process, such as the GDT
|
|
|
- * and IDT. We reload them nevertheless, this function acts as a
|
|
|
- * 'CPU state barrier', nothing should get across.
|
|
|
- */
|
|
|
-void __cpuinit cpu_init(void)
|
|
|
-{
|
|
|
- int cpu = smp_processor_id();
|
|
|
- struct task_struct *curr = current;
|
|
|
-
|
|
|
- _cpu_init(cpu, curr);
|
|
|
-}
|
|
|
-
|
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
|
void __cpuinit cpu_uninit(void)
|
|
|
{
|