Messages in this thread Patch in this message | | | Date | Mon, 21 Nov 2011 10:19:31 -0500 (EST) | From | Dave Anderson <> | Subject | Re: [RFC Patch 1/2][slimdump] Append CRASH_REASON to VMCOREINFO elf-note |
| |
----- Original Message ----- > Allow various crash paths to append the reason of crash into the > VMCOREINFO elf-note through the field CRASH_REASON. We also make the > fatal machine check exceptions append "PANIC_MCE" as the crash > reason. This string will be recognised by upstream tools like makedumpfile and > crash to generate slimdump.
I don't understand -- how could "various paths" append a reason? The patch below seems to return "PANIC_MCE" for every x86 crash. What am I missing?
Dave > With increased usage of the CRASH_REASON field, the crash strings can be > encoded for better usage. > > Signed-off-by: K.Prasad <prasad@linux.vnet.ibm.com> > --- > arch/x86/kernel/cpu/mcheck/mce.c | 8 ++++++++ > kernel/kexec.c | 6 ++++++ > 2 files changed, 14 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kernel/cpu/mcheck/mce.c > b/arch/x86/kernel/cpu/mcheck/mce.c > index 362056a..5b2cb6a 100644 > --- a/arch/x86/kernel/cpu/mcheck/mce.c > +++ b/arch/x86/kernel/cpu/mcheck/mce.c > @@ -38,6 +38,7 @@ > #include <linux/debugfs.h> > #include <linux/irq_work.h> > #include <linux/export.h> > +#include <linux/kexec.h> > > #include <asm/processor.h> > #include <asm/mce.h> > @@ -240,6 +241,13 @@ static atomic_t mce_paniced; > static int fake_panic; > static atomic_t mce_fake_paniced; > > +char *arch_add_crash_reason(void) > +{ > + static char crash_reason[] = "PANIC_MCE"; > + > + return crash_reason; > +} > + > /* Panic in progress. Enable interrupts and wait for final IPI */ > static void wait_for_panic(void) > { > diff --git a/kernel/kexec.c b/kernel/kexec.c > index dc7bc08..a731693 100644 > --- a/kernel/kexec.c > +++ b/kernel/kexec.c > @@ -1080,6 +1080,11 @@ asmlinkage long compat_sys_kexec_load(unsigned > long entry, > } > #endif > > +__weak char *arch_add_crash_reason(void) > +{ > + return (char *)NULL; > +} > + > void crash_kexec(struct pt_regs *regs) > { > /* Take the kexec_mutex here to prevent sys_kexec_load > @@ -1411,6 +1416,7 @@ static void update_vmcoreinfo_note(void) > void crash_save_vmcoreinfo(void) > { > vmcoreinfo_append_str("CRASHTIME=%ld", get_seconds()); > + vmcoreinfo_append_str("\nCRASH_REASON=%s\n", arch_add_crash_reason()); > update_vmcoreinfo_note(); > } > > >
| |