|
@@ -208,7 +208,10 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle)
|
|
|
asmlinkage void secondary_start_kernel(void)
|
|
|
{
|
|
|
struct mm_struct *mm = &init_mm;
|
|
|
- unsigned int cpu = smp_processor_id();
|
|
|
+ unsigned int cpu;
|
|
|
+
|
|
|
+ cpu = task_cpu(current);
|
|
|
+ set_my_cpu_offset(per_cpu_offset(cpu));
|
|
|
|
|
|
/*
|
|
|
* All kernel threads share the same mm context; grab a
|
|
@@ -217,8 +220,6 @@ asmlinkage void secondary_start_kernel(void)
|
|
|
atomic_inc(&mm->mm_count);
|
|
|
current->active_mm = mm;
|
|
|
|
|
|
- set_my_cpu_offset(per_cpu_offset(smp_processor_id()));
|
|
|
-
|
|
|
/*
|
|
|
* TTBR0 is only used for the identity mapping at this stage. Make it
|
|
|
* point to zero page to avoid speculatively fetching new entries.
|