[PATCH] print kdump kernel loaded status in stack dump

Dave Young dyoung at redhat.com
Wed Jan 17 17:57:21 PST 2018


On 01/17/18 at 02:42pm, Petr Mladek wrote:
> 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 at redhat.com>
> > > > ---
> > > >  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 at suse.com>
> 
> I could update the string when pushing into printk.git.
> I am just going to wait a bit for more feedback if any.

Cool, thank you!

> 
> Best Regards,
> Petr

Thanks
Dave



More information about the kexec mailing list