arm64: smp: Jump back to secondary start kernel for onlined CPUs
Add a call to secondary start kernel for cpus which have been onlined via the hotplug path for wfi based hotplug solution where the return path from cpu_die should not return to the idle thread. Update the cpu_die definition with a __ref to allow referencing a __cpuinit call (secondary_start_kernel) from it. Change-Id: I7c083effda3928b562ea0d601833ceb8d5178d43 Signed-off-by: Abhimanyu Kapur <abhimany@codeaurora.org>
This commit is contained in:
parent
e6903e45a6
commit
f237941bd1
1 changed files with 11 additions and 2 deletions
|
@ -295,7 +295,7 @@ void __cpu_die(unsigned int cpu)
|
|||
* of the other hotplug-cpu capable cores, so presumably coming
|
||||
* out of idle fixes this.
|
||||
*/
|
||||
void cpu_die(void)
|
||||
void __ref cpu_die(void)
|
||||
{
|
||||
unsigned int cpu = smp_processor_id();
|
||||
|
||||
|
@ -313,7 +313,16 @@ void cpu_die(void)
|
|||
*/
|
||||
cpu_ops[cpu]->cpu_die(cpu);
|
||||
|
||||
BUG();
|
||||
/*
|
||||
* Do not return to the idle loop - jump back to the secondary
|
||||
* cpu initialisation. There's some initialisation which needs
|
||||
* to be repeated to undo the effects of taking the CPU offline.
|
||||
*/
|
||||
|
||||
asm volatile("mov sp, %0\n"
|
||||
"mov x29, #0\n"
|
||||
"b secondary_start_kernel"
|
||||
: : "r" (task_stack_page(current) + THREAD_START_SP));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue