aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2005-12-04 02:39:43 -0500
committerPaul Mackerras <paulus@samba.org>2006-01-08 22:52:28 -0500
commitcc53291521701f9c7c7265bbb3c140563174d8b2 (patch)
tree9fa71dbb7d853f983c9033fc629edcd118c67858 /arch/powerpc/platforms
parent758438a7b8da593c9116e95cc7fdff6e9e0b0c40 (diff)
[PATCH] powerpc: Add arch dependent basic infrastructure for Kdump.
Implementing the machine_crash_shutdown which will be called by crash_kexec (called in case of a panic, sysrq etc.). Disable the interrupts, shootdown cpus using debugger IPI and collect regs for all CPUs. elfcorehdr= specifies the location of elf core header stored by the crashed kernel. This command line option will be passed by the kexec-tools to capture kernel. savemaxmem= specifies the actual memory size that the first kernel has and this value will be used for dumping in the capture kernel. This command line option will be passed by the kexec-tools to capture kernel. Signed-off-by: Haren Myneni <haren@us.ibm.com> Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/platforms')
-rw-r--r--arch/powerpc/platforms/cell/setup.c1
-rw-r--r--arch/powerpc/platforms/maple/setup.c1
-rw-r--r--arch/powerpc/platforms/powermac/setup.c1
-rw-r--r--arch/powerpc/platforms/pseries/setup.c1
-rw-r--r--arch/powerpc/platforms/pseries/xics.c2
5 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index 25e0f68d0531..56273e56cbfb 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -217,5 +217,6 @@ struct machdep_calls __initdata cell_md = {
217#ifdef CONFIG_KEXEC 217#ifdef CONFIG_KEXEC
218 .machine_kexec = default_machine_kexec, 218 .machine_kexec = default_machine_kexec,
219 .machine_kexec_prepare = default_machine_kexec_prepare, 219 .machine_kexec_prepare = default_machine_kexec_prepare,
220 .machine_crash_shutdown = default_machine_crash_shutdown,
220#endif 221#endif
221}; 222};
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c
index 8724e031e965..65fe4c166a68 100644
--- a/arch/powerpc/platforms/maple/setup.c
+++ b/arch/powerpc/platforms/maple/setup.c
@@ -282,5 +282,6 @@ struct machdep_calls __initdata maple_md = {
282#ifdef CONFIG_KEXEC 282#ifdef CONFIG_KEXEC
283 .machine_kexec = default_machine_kexec, 283 .machine_kexec = default_machine_kexec,
284 .machine_kexec_prepare = default_machine_kexec_prepare, 284 .machine_kexec_prepare = default_machine_kexec_prepare,
285 .machine_crash_shutdown = default_machine_crash_shutdown,
285#endif 286#endif
286}; 287};
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c
index 6ee620fe5195..c0638e47c298 100644
--- a/arch/powerpc/platforms/powermac/setup.c
+++ b/arch/powerpc/platforms/powermac/setup.c
@@ -771,6 +771,7 @@ struct machdep_calls __initdata pmac_md = {
771#ifdef CONFIG_KEXEC 771#ifdef CONFIG_KEXEC
772 .machine_kexec = default_machine_kexec, 772 .machine_kexec = default_machine_kexec,
773 .machine_kexec_prepare = default_machine_kexec_prepare, 773 .machine_kexec_prepare = default_machine_kexec_prepare,
774 .machine_crash_shutdown = default_machine_crash_shutdown,
774#endif 775#endif
775#endif /* CONFIG_PPC64 */ 776#endif /* CONFIG_PPC64 */
776#ifdef CONFIG_PPC32 777#ifdef CONFIG_PPC32
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index d678f228fc0f..2cb082871210 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -629,5 +629,6 @@ struct machdep_calls __initdata pSeries_md = {
629 .kexec_cpu_down = pseries_kexec_cpu_down, 629 .kexec_cpu_down = pseries_kexec_cpu_down,
630 .machine_kexec = default_machine_kexec, 630 .machine_kexec = default_machine_kexec,
631 .machine_kexec_prepare = default_machine_kexec_prepare, 631 .machine_kexec_prepare = default_machine_kexec_prepare,
632 .machine_crash_shutdown = default_machine_crash_shutdown,
632#endif 633#endif
633}; 634};
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c
index 0377decc0719..0c0cfa32eb58 100644
--- a/arch/powerpc/platforms/pseries/xics.c
+++ b/arch/powerpc/platforms/pseries/xics.c
@@ -407,7 +407,7 @@ irqreturn_t xics_ipi_action(int irq, void *dev_id, struct pt_regs *regs)
407 smp_message_recv(PPC_MSG_MIGRATE_TASK, regs); 407 smp_message_recv(PPC_MSG_MIGRATE_TASK, regs);
408 } 408 }
409#endif 409#endif
410#ifdef CONFIG_DEBUGGER 410#if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC)
411 if (test_and_clear_bit(PPC_MSG_DEBUGGER_BREAK, 411 if (test_and_clear_bit(PPC_MSG_DEBUGGER_BREAK,
412 &xics_ipi_message[cpu].value)) { 412 &xics_ipi_message[cpu].value)) {
413 mb(); 413 mb();