On Sat, 2019-02-23 at 12:24:39 UTC, Michael Ellerman wrote: > 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 f761622e5943 ("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 3b5750644b2f ("[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 <m...@ellerman.id.au>
Applied to powerpc next. https://git.kernel.org/powerpc/c/eafd825ed7106ac1ca84d20d8b3b8682 cheers