diff options
Diffstat (limited to 'arch/powerpc/kernel/misc_64.S')
| -rw-r--r-- | arch/powerpc/kernel/misc_64.S | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S index 206a321a71d..e89df59cdc5 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S @@ -462,7 +462,8 @@ _GLOBAL(disable_kernel_fp)   * wait for the flag to change, indicating this kernel is going away but   * the slave code for the next one is at addresses 0 to 100.   * - * This is used by all slaves. + * This is used by all slaves, even those that did not find a matching + * paca in the secondary startup code.   *   * Physical (hardware) cpu id should be in r3.   */ @@ -471,10 +472,6 @@ _GLOBAL(kexec_wait)  1:	mflr	r5  	addi	r5,r5,kexec_flag-1b -	li	r4,KEXEC_STATE_REAL_MODE -	stb	r4,PACAKEXECSTATE(r13) -	SYNC -  99:	HMT_LOW  #ifdef CONFIG_KEXEC		/* use no memory without kexec */  	lwz	r4,0(r5) @@ -499,11 +496,17 @@ kexec_flag:   *   * get phys id from paca   * switch to real mode + * mark the paca as no longer used   * join other cpus in kexec_wait(phys_id)   */  _GLOBAL(kexec_smp_wait)  	lhz	r3,PACAHWCPUID(r13)  	bl	real_mode + +	li	r4,KEXEC_STATE_REAL_MODE +	stb	r4,PACAKEXECSTATE(r13) +	SYNC +  	b	.kexec_wait  /*  |