diff options
author | Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com> | 2012-02-15 20:14:45 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-02-22 18:50:01 -0500 |
commit | ebaeb5ae24379b5b635dc1d1fa6df904bc95b4d9 (patch) | |
tree | 4c1d54e9ec25f48dd05708ed62d5eb6db9d0ba9d /arch/powerpc/kernel/traps.c | |
parent | 2df173d9e85d9e2c6a8933c63f0c034accff7e0f (diff) |
fadump: Convert firmware-assisted cpu state dump data into elf notes.
When registered for firmware assisted dump on powerpc, firmware preserves
the registers for the active CPUs during a system crash. This patch reads
the cpu register data stored in Firmware-assisted dump format (except for
crashing cpu) and converts it into elf notes and updates the PT_NOTE program
header accordingly. The exact register state for crashing cpu is saved to
fadump crash info structure in scratch area during crash_fadump() and read
during second kernel boot.
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/traps.c')
-rw-r--r-- | arch/powerpc/kernel/traps.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index c091527efd89..5d40e592ffcb 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -57,6 +57,7 @@ | |||
57 | #include <asm/kexec.h> | 57 | #include <asm/kexec.h> |
58 | #include <asm/ppc-opcode.h> | 58 | #include <asm/ppc-opcode.h> |
59 | #include <asm/rio.h> | 59 | #include <asm/rio.h> |
60 | #include <asm/fadump.h> | ||
60 | 61 | ||
61 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) | 62 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) |
62 | int (*__debugger)(struct pt_regs *regs) __read_mostly; | 63 | int (*__debugger)(struct pt_regs *regs) __read_mostly; |
@@ -145,6 +146,8 @@ static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, | |||
145 | arch_spin_unlock(&die_lock); | 146 | arch_spin_unlock(&die_lock); |
146 | raw_local_irq_restore(flags); | 147 | raw_local_irq_restore(flags); |
147 | 148 | ||
149 | crash_fadump(regs, "die oops"); | ||
150 | |||
148 | /* | 151 | /* |
149 | * A system reset (0x100) is a request to dump, so we always send | 152 | * A system reset (0x100) is a request to dump, so we always send |
150 | * it through the crashdump code. | 153 | * it through the crashdump code. |