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
|
* of the other hotplug-cpu capable cores, so presumably coming
|
||||||
* out of idle fixes this.
|
* out of idle fixes this.
|
||||||
*/
|
*/
|
||||||
void cpu_die(void)
|
void __ref cpu_die(void)
|
||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
|
|
||||||
|
@ -313,7 +313,16 @@ void cpu_die(void)
|
||||||
*/
|
*/
|
||||||
cpu_ops[cpu]->cpu_die(cpu);
|
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
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue