kexec-save-pg_head_mask-in-vmcoreinfo.patch

Petr Tesarik ptesarik at suse.cz
Mon Jun 16 23:10:01 PDT 2014


On Thu, 12 Jun 2014 17:04:36 +0200
Petr Tesarik <ptesarik at suse.cz> wrote:

> On Wed, 11 Jun 2014 13:24:22 -0400
> Vivek Goyal <vgoyal at redhat.com> wrote:
> 
> > On Wed, Jun 11, 2014 at 01:20:42PM +0200, Petr Tesarik wrote:
> > > On Tue, 10 Jun 2014 11:35:54 -0400
> > > Vivek Goyal <vgoyal at redhat.com> wrote:
> > > 
> > > > On Mon, Jun 09, 2014 at 03:31:53PM -0700, Andrew Morton wrote:
> > > > > 
> > > > > 
> > > > > Guys, could you please review this one?
> > > > > 
> > > > > Thanks.
> > > > > 
> > > > > 
> > > > > From: Petr Tesarik <ptesarik at suse.cz>
> > > > > Subject: kexec: save PG_head_mask in VMCOREINFO
> > > > > 
> > > > > To allow filtering of huge pages, makedumpfile must be able to identify
> > > > > them in the dump.  This can be done by checking the appropriate page flag,
> > > > > so communicate its value to makedumpfile through the VMCOREINFO interface.
> > > > > 
> > > > > There's only one small catch.  Depending on how many page flags are
> > > > > available on a given architecture, this bit can be called PG_head or
> > > > > PG_compound.
> > > > > 
> > > > > I sent a similar patch back in 2012, but Eric Biederman did not like using
> > > > > an #ifdef.  So, this time I'm adding a common symbol (PG_head_mask)
> > > > > instead.
> > > > > 
> > > > > See https://lkml.org/lkml/2012/11/28/91 for the previous version.
> > > > > 
> > > > 
> > > > Hi Petr,
> > > > 
> > > > I went through previous conversation and personally I like that patch
> > > > better.
> > > > 
> > > > We already have so many exports in vmcoreinfo which are conditional
> > > > based on config options. Adding one more should be just fine. And as
> > > > you said that it should not bitrot as it will most likely lead
> > > > to complication failures if things shift around.
> > > > 
> > > > Does this patch compile with !CONFIG_PAGEFLAGS_EXTENDED. I did not see
> > > > a definition of PG_head_mask in that case.
> > > 
> > > With !CONFIG_PAGEFLAGS_EXTENDED, the definition of PG_head_mask is
> > > already there (and has been for quite some time).
> > 
> > Oh.., I had not noticed that. Thanks.
> > 
> > > 
> > > > So I would say post your patch again, I will ack it. CC Eric and hopefully
> > > > he does not have any objections to it.

Oh, it seems you're still waiting for Eric's opinion, but I didn't
notice that he wasn't in Cc yet.

> > > Er, I'm not sure which patch you mean. The original one (with
> > > conditional PG_head/PG_compound), or the new one (with PG_head_mask)?
> > 
> > Given PG_head_mask is already defined for !CONFIG_PAGEFLAGS_EXTENDED, I
> > am fine with this version too. 
> > 
> > So bottom line, I am fine with either version. Given that Andrew 
> > already seems to have this one queued, I will ack this one.
> > 
> > Acked-by: Vivek Goyal <vgoyal at redhat.com>

Eric, based on Vivek's feedback, do you have any objections to the
following patch:

http://ozlabs.org/~akpm/mmotm/broken-out/kexec-save-pg_head_mask-in-vmcoreinfo.patch

Thanks,
Petr Tesarik

> Thank you!
> 
> As a side note, I personally like this new version better, because it
> does not propagate the differences between CONFIG_PAGEFLAGS_EXTENDED
> and !CONFIG_PAGEFLAGS_EXTENDED to VMCOREINFO (and consequently to all
> tools that want to use it).
> 
> Petr Tesarik
> 
> > > > > Signed-off-by: Petr Tesarik <ptesarik at suse.cz>
> > > > > Cc: Eric Biederman <ebiederm at xmission.com>
> > > > > Cc: Paul Mackerras <paulus at samba.org>
> > > > > Cc: Fengguang Wu <fengguang.wu at intel.com>
> > > > > Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> > > > > Cc: Shaohua Li <shli at kernel.org>
> > > > > Cc: Alexey Kardashevskiy <aik at ozlabs.ru>
> > > > > Cc: Sasha Levin <sasha.levin at oracle.com>
> > > > > Cc: Vivek Goyal <vgoyal at redhat.com>
> > > > > Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
> > > > > ---
> > > > > 
> > > > >  include/linux/page-flags.h |    3 +++
> > > > >  kernel/kexec.c             |    1 +
> > > > >  2 files changed, 4 insertions(+)
> > > > > 
> > > > > diff -puN include/linux/page-flags.h~kexec-save-pg_head_mask-in-vmcoreinfo include/linux/page-flags.h
> > > > > --- a/include/linux/page-flags.h~kexec-save-pg_head_mask-in-vmcoreinfo
> > > > > +++ a/include/linux/page-flags.h
> > > > > @@ -350,6 +350,9 @@ static inline void ClearPageCompound(str
> > > > >  	ClearPageHead(page);
> > > > >  }
> > > > >  #endif
> > > > > +
> > > > > +#define PG_head_mask ((1L << PG_head))
> > > > > +
> > > > >  #else
> > > > >  /*
> > > > >   * Reduce page flag use as much as possible by overlapping
> > > > > diff -puN kernel/kexec.c~kexec-save-pg_head_mask-in-vmcoreinfo kernel/kexec.c
> > > > > --- a/kernel/kexec.c~kexec-save-pg_head_mask-in-vmcoreinfo
> > > > > +++ a/kernel/kexec.c
> > > > > @@ -1617,6 +1617,7 @@ static int __init crash_save_vmcoreinfo_
> > > > >  #ifdef CONFIG_MEMORY_FAILURE
> > > > >  	VMCOREINFO_NUMBER(PG_hwpoison);
> > > > >  #endif
> > > > > +	VMCOREINFO_NUMBER(PG_head_mask);
> > > > >  	VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE);
> > > > >  
> > > > >  	arch_crash_save_vmcoreinfo();
> > > > > _
> 




More information about the kexec mailing list