[PATCH] kexec: crash: don't save swapper_pg_dir for !CONFIG_MMU configurations

Andrew Morton akpm at linux-foundation.org
Mon Feb 27 20:25:55 EST 2012


On Tue, 28 Feb 2012 09:51:30 +0900 Simon Horman <horms at verge.net.au> wrote:

> On Mon, Feb 27, 2012 at 04:26:31PM -0800, Andrew Morton wrote:
> > On Tue, 28 Feb 2012 09:19:28 +0900
> > Simon Horman <horms at verge.net.au> wrote:
> > 
> > > > > --- a/kernel/kexec.c
> > > > > +++ b/kernel/kexec.c
> > > > > @@ -1462,7 +1462,9 @@ static int __init crash_save_vmcoreinfo_init(void)
> > > > >  
> > > > >  	VMCOREINFO_SYMBOL(init_uts_ns);
> > > > >  	VMCOREINFO_SYMBOL(node_online_map);
> > > > > +#ifdef CONFIG_MMU
> > > > >  	VMCOREINFO_SYMBOL(swapper_pg_dir);
> > > > > +#endif
> > > > >  	VMCOREINFO_SYMBOL(_stext);
> > > > >  	VMCOREINFO_SYMBOL(vmlist);
> > > > 
> > > > Well, what might be the effects of this patch?  nommu crashfiles will
> > > > no longer have the swapper_pg_dir string?  What are the chances that
> > > > someone's (badly written!) downstream tool will crash and burn if this
> > > > is absent?
> > > 
> > > My understanding is that up until this patch creating a dump
> > > for nonmmu platform wouldn't work.
> > 
> > Surprised.  From reading the code I expect it would have emitted 
> > 
> > 	SYMBOL(swapper_pg_dir)=0
> 
> Hi Andrew,
> 
> My understanding from discussion with Will earlier in this thread is that if
> CONFIG_MMU is not defined then swapper_pg_dir is NULL and the current code
> doesn't compile.
> 
> 	<quote>
> 	The only case where it's interesting is when you have CONFIG_MMU
> 	enabled - otherwise it's always NULL. If it's #defined as NULL, the
> 	current code will fail at build time so simply omitting it from the
> 	dump seems like the best bet to me (the alternative being to add a
> 	NULL entry explicitly, but I don't see what the gains us).
> 	</quote>

OK.  That's because everything is all screwed up ;)

swapper_pg_dir is normally an array.  But on nommu it is a pointer. 
VMCOREINFO_SYMBOL() wants to take its address (unnecessary on an array)
and this blows up when fed a pointer.


Still, you didn't answer my question!  What effect will the absence of
SYMBOL(swapper_pg_dir)= have upon downstream tools?  If "none" then
sure, let's remove it.  If "explosion" then we should emit a dummy
SYMBOL(swapper_pg_dir)=0 if CONFIG_NOMMU.




More information about the kexec mailing list