aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/crash_dump.c
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/kernel/crash_dump.c
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/kernel/crash_dump.c')
-rw-r--r--arch/powerpc/kernel/crash_dump.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/crash_dump.c b/arch/powerpc/kernel/crash_dump.c
index 63919bcfc9fe..5337ab759780 100644
--- a/arch/powerpc/kernel/crash_dump.c
+++ b/arch/powerpc/kernel/crash_dump.c
@@ -11,6 +11,8 @@
11 11
12#undef DEBUG 12#undef DEBUG
13 13
14#include <linux/crash_dump.h>
15#include <linux/bootmem.h>
14#include <asm/kdump.h> 16#include <asm/kdump.h>
15#include <asm/lmb.h> 17#include <asm/lmb.h>
16#include <asm/firmware.h> 18#include <asm/firmware.h>
@@ -51,3 +53,21 @@ void __init kdump_setup(void)
51 53
52 DBG(" <- kdump_setup()\n"); 54 DBG(" <- kdump_setup()\n");
53} 55}
56
57static int __init parse_elfcorehdr(char *p)
58{
59 if (p)
60 elfcorehdr_addr = memparse(p, &p);
61
62 return 0;
63}
64__setup("elfcorehdr=", parse_elfcorehdr);
65
66static int __init parse_savemaxmem(char *p)
67{
68 if (p)
69 saved_max_pfn = (memparse(p, &p) >> PAGE_SHIFT) - 1;
70
71 return 0;
72}
73__setup("savemaxmem=", parse_savemaxmem);