diff options
Diffstat (limited to 'arch/powerpc/kernel/traps.c')
-rw-r--r-- | arch/powerpc/kernel/traps.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index c091527efd89..a750409ccc4e 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. |
@@ -244,6 +247,9 @@ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr) | |||
244 | addr, regs->nip, regs->link, code); | 247 | addr, regs->nip, regs->link, code); |
245 | } | 248 | } |
246 | 249 | ||
250 | if (!arch_irq_disabled_regs(regs)) | ||
251 | local_irq_enable(); | ||
252 | |||
247 | memset(&info, 0, sizeof(info)); | 253 | memset(&info, 0, sizeof(info)); |
248 | info.si_signo = signr; | 254 | info.si_signo = signr; |
249 | info.si_code = code; | 255 | info.si_code = code; |