Commit 0f4bd46ec252887f44f1f065b41867cac8f70dfb
Committed by
David Woodhouse
1 parent
60d9aa758c
Exists in
master
and in
4 other branches
kmsg_dump: Dump on crash_kexec as well
crash_kexec gets called before kmsg_dump(KMSG_DUMP_OOPS) if panic_on_oops is set, so the kernel log buffer is not stored for this case. This patch adds a KMSG_DUMP_KEXEC dump type which gets called when crash_kexec() is invoked. To avoid getting double dumps, the old KMSG_DUMP_PANIC is moved below crash_kexec(). The mtdoops driver is modified to handle KMSG_DUMP_KEXEC in the same way as a panic. Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Acked-by: Simon Kagstrom <simon.kagstrom@netinsight.net> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Showing 5 changed files with 9 additions and 2 deletions Side-by-side Diff
drivers/mtd/mtdoops.c
... | ... | @@ -322,7 +322,7 @@ |
322 | 322 | memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy); |
323 | 323 | |
324 | 324 | /* Panics must be written immediately */ |
325 | - if (reason == KMSG_DUMP_PANIC) { | |
325 | + if (reason != KMSG_DUMP_OOPS) { | |
326 | 326 | if (!cxt->mtd->panic_write) |
327 | 327 | printk(KERN_ERR "mtdoops: Cannot write from panic without panic_write\n"); |
328 | 328 | else |
include/linux/kmsg_dump.h
kernel/kexec.c
... | ... | @@ -32,6 +32,7 @@ |
32 | 32 | #include <linux/console.h> |
33 | 33 | #include <linux/vmalloc.h> |
34 | 34 | #include <linux/swap.h> |
35 | +#include <linux/kmsg_dump.h> | |
35 | 36 | |
36 | 37 | #include <asm/page.h> |
37 | 38 | #include <asm/uaccess.h> |
... | ... | @@ -1074,6 +1075,9 @@ |
1074 | 1075 | if (mutex_trylock(&kexec_mutex)) { |
1075 | 1076 | if (kexec_crash_image) { |
1076 | 1077 | struct pt_regs fixed_regs; |
1078 | + | |
1079 | + kmsg_dump(KMSG_DUMP_KEXEC); | |
1080 | + | |
1077 | 1081 | crash_setup_regs(&fixed_regs, regs); |
1078 | 1082 | crash_save_vmcoreinfo(); |
1079 | 1083 | machine_crash_shutdown(&fixed_regs); |
kernel/panic.c
... | ... | @@ -75,13 +75,14 @@ |
75 | 75 | dump_stack(); |
76 | 76 | #endif |
77 | 77 | |
78 | - kmsg_dump(KMSG_DUMP_PANIC); | |
79 | 78 | /* |
80 | 79 | * If we have crashed and we have a crash kernel loaded let it handle |
81 | 80 | * everything else. |
82 | 81 | * Do we want to call this before we try to display a message? |
83 | 82 | */ |
84 | 83 | crash_kexec(NULL); |
84 | + | |
85 | + kmsg_dump(KMSG_DUMP_PANIC); | |
85 | 86 | |
86 | 87 | /* |
87 | 88 | * Note smp_send_stop is the usual smp shutdown function, which |
kernel/printk.c