]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/64: Simplify __secondary_start paca->kstack handling
authorMichael Ellerman <mpe@ellerman.id.au>
Fri, 22 Feb 2019 12:58:21 +0000 (23:58 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 23 Feb 2019 11:31:39 +0000 (22:31 +1100)
commit4c2e873b19318d1f1897d6f221167ae0967ab8d1
tree46e30d8932f1c0e3a8eb94a289ace7025f3a08bd
parent3c1da9eeb9472e717681a6b407cc825542b05b03
powerpc/64: Simplify __secondary_start paca->kstack handling

In __secondary_start() we load the thread_info of the idle task of the
secondary CPU from current_set[cpu], and then convert it into a stack
pointer before storing that back to paca->kstack.

As pointed out in commit f22cb7a7e2d6 ("powerpc: Initialise
paca->kstack before early_setup_secondary") it's important that we
initialise paca->kstack before calling the MMU setup code, in
particular slb_initialize(), because it will bolt the SLB entry for
the kstack into the SLB.

However we have already setup paca->kstack in cpu_idle_thread_init(),
since commit af5fe838e455 ("[POWERPC] Bolt in SLB entry for kernel
stack on secondary cpus") (May 2008).

It's also in cpu_idle_thread_init() that we initialise current_set[cpu]
with the thread_info pointer, so there is no issue of the timing being
different between the two.

Therefore the initialisation of paca->kstack in __setup_secondary() is
completely redundant, so remove it.

This has the added benefit of removing code that runs in real mode,
and is therefore restricted by the RMO, and so opens the way for us to
enable THREAD_INFO_IN_TASK.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/head_64.S