aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc64/kernel/machine_kexec.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-08-04 15:53:37 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-08-04 16:00:55 -0400
commit6d22d85a852b72398a81b8e476977b28b4400f7c (patch)
tree3824c246813b7c326bceedc0b8c3c8ca49c7fd0b /arch/ppc64/kernel/machine_kexec.c
parent48f1f5328267f52a34e61b8b0e6fc55a23c1348a (diff)
[PATCH] ppc64: fix for kexec boot issue
The kexec boot is not successful on some power machines since all CPUs are getting removed from global interrupt queue (GIQ) before kexec boot. Some systems always expect at least one CPU in GIQ. Hence, this patch will make sure that only secondary CPUs are removed from GIQ. Signed-off-by: Haren Myneni <hbabu@us.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/ppc64/kernel/machine_kexec.c')
-rw-r--r--arch/ppc64/kernel/machine_kexec.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/ppc64/kernel/machine_kexec.c b/arch/ppc64/kernel/machine_kexec.c
index 5c40bb6788df..4775f12a013c 100644
--- a/arch/ppc64/kernel/machine_kexec.c
+++ b/arch/ppc64/kernel/machine_kexec.c
@@ -185,7 +185,7 @@ void kexec_copy_flush(struct kimage *image)
185void kexec_smp_down(void *arg) 185void kexec_smp_down(void *arg)
186{ 186{
187 if (ppc_md.cpu_irq_down) 187 if (ppc_md.cpu_irq_down)
188 ppc_md.cpu_irq_down(); 188 ppc_md.cpu_irq_down(1);
189 189
190 local_irq_disable(); 190 local_irq_disable();
191 kexec_smp_wait(); 191 kexec_smp_wait();
@@ -232,7 +232,7 @@ static void kexec_prepare_cpus(void)
232 232
233 /* after we tell the others to go down */ 233 /* after we tell the others to go down */
234 if (ppc_md.cpu_irq_down) 234 if (ppc_md.cpu_irq_down)
235 ppc_md.cpu_irq_down(); 235 ppc_md.cpu_irq_down(0);
236 236
237 put_cpu(); 237 put_cpu();
238 238
@@ -255,7 +255,7 @@ static void kexec_prepare_cpus(void)
255 */ 255 */
256 smp_release_cpus(); 256 smp_release_cpus();
257 if (ppc_md.cpu_irq_down) 257 if (ppc_md.cpu_irq_down)
258 ppc_md.cpu_irq_down(); 258 ppc_md.cpu_irq_down(0);
259 local_irq_disable(); 259 local_irq_disable();
260} 260}
261 261