[patch 1/2] kdump: Initialize vmcoreinfo note at startup
Vivek Goyal
vgoyal at redhat.com
Thu Sep 15 14:46:37 EDT 2011
On Fri, Sep 09, 2011 at 12:27:00PM +0200, Michael Holzheu wrote:
> From: Michael Holzheu <holzheu at linux.vnet.ibm.com>
>
> Currently the vmcoreinfo note is only initialized in case of kdump. On s390
> it is possible to create kernel dumps with other dump mechanisms than kdump
> (e.g. via hypervisor dump or stand-alone dump tools).
Both of these will be invoked through panic notifiers because kdump kernel
is not loaded?
>For those dumps it
> would also be desirable to include the vmcoreinfo data.
Curious that how these two dump schemes make use vmcoreinfo data?
> To accomplish this,
> with this patch the vmcoreinfo ELF note is always initialized, not only in
> case of a (kdump) crash. On s390 we will add an ABI defined pointer at
> a well known address to vmcoreinfo so that dump analysis tools are able to
> find this information.
Instead of this, why don't you initialize the notes in your arch specific
call. IOW, why don't you give a call to crash_save_vmcoreinfo() in stand
alone dump path to prepare the note and then continue with stand alone
dump.
Thanks
Vivek
>
> Signed-off-by: Michael Holzheu <holzheu at linux.vnet.ibm.com>
> ---
> kernel/kexec.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> --- a/kernel/kexec.c
> +++ b/kernel/kexec.c
> @@ -1392,24 +1392,23 @@ int __init parse_crashkernel(char *cm
> }
>
>
> -
> -void crash_save_vmcoreinfo(void)
> +static void update_vmcoreinfo_note(void)
> {
> - u32 *buf;
> + u32 *buf = (u32 *) vmcoreinfo_note;
>
> if (!vmcoreinfo_size)
> return;
> -
> - vmcoreinfo_append_str("CRASHTIME=%ld", get_seconds());
> -
> - buf = (u32 *)vmcoreinfo_note;
> -
> buf = append_elf_note(buf, VMCOREINFO_NOTE_NAME, 0, vmcoreinfo_data,
> vmcoreinfo_size);
> -
> final_note(buf);
> }
>
> +void crash_save_vmcoreinfo(void)
> +{
> + vmcoreinfo_append_str("CRASHTIME=%ld", get_seconds());
> + update_vmcoreinfo_note();
> +}
> +
> void vmcoreinfo_append_str(const char *fmt, ...)
> {
> va_list args;
> @@ -1495,6 +1494,7 @@ static int __init crash_save_vmcoreinfo_
> VMCOREINFO_NUMBER(PG_swapcache);
>
> arch_crash_save_vmcoreinfo();
> + update_vmcoreinfo_note();
>
> return 0;
> }
More information about the kexec
mailing list