Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f761622e authored by Matt Evans's avatar Matt Evans Committed by Benjamin Herrenschmidt
Browse files

powerpc: Initialise paca->kstack before early_setup_secondary



As early setup calls down to slb_initialize(), we must have kstack
initialised before checking "should we add a bolted SLB entry for our kstack?"

Failing to do so means stack access requires an SLB miss exception to refill
an entry dynamically, if the stack isn't accessible via SLB(0) (kernel text
& static data).  It's not always allowable to take such a miss, and
intermittent crashes will result.

Primary CPUs don't have this issue; an SLB entry is not bolted for their
stack anyway (as that lives within SLB(0)).  This patch therefore only
affects the init of secondaries.

Signed-off-by: default avatarMatt Evans <matt@ozlabs.org>
Cc: stable <stable@kernel.org>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 7aa241fd
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -572,9 +572,6 @@ __secondary_start:
	/* Set thread priority to MEDIUM */
	/* Set thread priority to MEDIUM */
	HMT_MEDIUM
	HMT_MEDIUM


	/* Do early setup for that CPU (stab, slb, hash table pointer) */
	bl	.early_setup_secondary

	/* Initialize the kernel stack.  Just a repeat for iSeries.	 */
	/* Initialize the kernel stack.  Just a repeat for iSeries.	 */
	LOAD_REG_ADDR(r3, current_set)
	LOAD_REG_ADDR(r3, current_set)
	sldi	r28,r24,3		/* get current_set[cpu#]	 */
	sldi	r28,r24,3		/* get current_set[cpu#]	 */
@@ -582,6 +579,9 @@ __secondary_start:
	addi	r1,r1,THREAD_SIZE-STACK_FRAME_OVERHEAD
	addi	r1,r1,THREAD_SIZE-STACK_FRAME_OVERHEAD
	std	r1,PACAKSAVE(r13)
	std	r1,PACAKSAVE(r13)


	/* Do early setup for that CPU (stab, slb, hash table pointer) */
	bl	.early_setup_secondary

	/* Clear backchain so we get nice backtraces */
	/* Clear backchain so we get nice backtraces */
	li	r7,0
	li	r7,0
	mtlr	r7
	mtlr	r7