diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2006-02-15 22:13:51 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-02-19 20:03:36 -0500 |
commit | 8fca92705ef462f39e7db5a0f7100bcaae91bfd3 (patch) | |
tree | e9b4db50bb523b869616bcb5dcea763b34069f42 /arch/powerpc/kernel/head_64.S | |
parent | f018b36f3e1f21318066de8d01740d30e38b03d5 (diff) |
[PATCH] powerpc: Make UP -> SMP kexec work again
For UP to SMP kexec to work we need to jump into pSeries_secondary_smp_init
event on a UP + KEXEC kernel. The secondary cpus will not find their hw_cpu_id
in the paca and so they'll jump into kexec_wait, ready for a kexec.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/head_64.S')
-rw-r--r-- | arch/powerpc/kernel/head_64.S | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index 415659629394..2b03a09fe5e9 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
@@ -157,8 +157,7 @@ _GLOBAL(__secondary_hold) | |||
157 | SET_REG_IMMEDIATE(r4, .hmt_init) | 157 | SET_REG_IMMEDIATE(r4, .hmt_init) |
158 | mtctr r4 | 158 | mtctr r4 |
159 | bctr | 159 | bctr |
160 | #else | 160 | #elif defined(CONFIG_SMP) || defined(CONFIG_KEXEC) |
161 | #ifdef CONFIG_SMP | ||
162 | LOAD_REG_IMMEDIATE(r4, .pSeries_secondary_smp_init) | 161 | LOAD_REG_IMMEDIATE(r4, .pSeries_secondary_smp_init) |
163 | mtctr r4 | 162 | mtctr r4 |
164 | mr r3,r24 | 163 | mr r3,r24 |
@@ -166,7 +165,6 @@ _GLOBAL(__secondary_hold) | |||
166 | #else | 165 | #else |
167 | BUG_OPCODE | 166 | BUG_OPCODE |
168 | #endif | 167 | #endif |
169 | #endif | ||
170 | 168 | ||
171 | /* This value is used to mark exception frames on the stack. */ | 169 | /* This value is used to mark exception frames on the stack. */ |
172 | .section ".toc","aw" | 170 | .section ".toc","aw" |