Re: [PATCH] print kdump kernel loaded status in stack dump
From: Petr Mladek
Date: Wed Jan 17 2018 - 08:42:24 EST
On Wed 2018-01-17 20:32:44, Dave Young wrote:
> Hi,
>
> Thanks for your comments.
> On 01/17/18 at 09:57am, Petr Mladek wrote:
> > On Wed 2018-01-17 12:50:57, Dave Young wrote:
> > > It is useful to print kdump kernel loaded status in dump_stack()
> > > especially when panic happens so that we can differenciate
> > > kdump kernel early hang and a normal panic in a bug report.
> > >
> > > Signed-off-by: Dave Young <dyoung@xxxxxxxxxx>
> > > ---
> > > kernel/printk/printk.c | 3 +++
> > > 1 file changed, 3 insertions(+)
> > >
> > > --- linux-x86.orig/kernel/printk/printk.c
> > > +++ linux-x86/kernel/printk/printk.c
> > > @@ -48,6 +48,7 @@
> > > #include <linux/sched/clock.h>
> > > #include <linux/sched/debug.h>
> > > #include <linux/sched/task_stack.h>
> > > +#include <linux/kexec.h>
> > >
> > > #include <linux/uaccess.h>
> > > #include <asm/sections.h>
> > > @@ -3127,6 +3128,8 @@ void dump_stack_print_info(const char *l
> > > if (dump_stack_arch_desc_str[0] != '\0')
> > > printk("%sHardware name: %s\n",
> > > log_lvl, dump_stack_arch_desc_str);
> > > + if (kexec_crash_loaded())
> > > + printk("%skdump kernel loaded\n", log_lvl);
> >
> > IMHO, it would be better to do it like for the workqueues.
> > I mean to call printk_kexec_info(log_lv1, current) here
> > that would be impletemented in kexec sources.
> > Then it could be maintained by kexec people.
> >
> > Anyway, I wonder if the info about kexec_crash_loaded() is
> > enough. I am not much familiar with kexec. AFAIK,
> > the image might be loaded long time before it
> > is acutally used.
>
> kexec_crash_loaded is enough, we only care if kdump kernel being
> loaded or not, nothing else, no matter how long it has been loaded.
> In Fedora/RHEL a kdump service takes care of loading the kernel but
> it runs after networking is ready. If people want to save
> the vmcore to nfs/ssh then we need detect network and build the
> initramfs. In the nfs/ssh case if some networking code panicked it
> is possible that kdump service has not started, but sometimes bug
> can not be easily reproduced thus nobody can know if kdump is active
> or not.
I see.
> Since kexec_crash_loaded() is already in kexec souce code, and it
> is the only thing need to know, do you think it is really necessary
> to add a printk_kexec_info()? I can do it if you strongly suggest
> to do so.
No, the original approach is fine if it is really that simple ;-)
> >
> > Finally, the style of the other lines is:
> >
> > Name: details
> >
> > I would suggest to print something like:
> >
> > Kexec: details
> >
> > , where the details might be whether the image is loaded,
> > whether the loaded kernel is being executed, and
> > other kexec-related flags.
>
> Will do, it can be something like:
> Kexec: kdump kernel loaded
Looks good to me. With this message, I could give this
patch even
Reviewed-by: Petr Mladek <pmladek@xxxxxxxx>
I could update the string when pushing into printk.git.
I am just going to wait a bit for more feedback if any.
Best Regards,
Petr