|
@@ -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
|
|
|
|
|
|
/*
|