[RESEND PATCH] kexec : add sparse memory related values to vmcore

Simon Horman horms at verge.net.au
Sun Jun 1 17:01:33 PDT 2014


On Fri, May 30, 2014 at 04:14:33PM +0800, Liu hua wrote:
> On 2014/5/29 8:13, Simon Horman wrote:
> > On Wed, May 28, 2014 at 09:49:56PM +0800, Liu Hua wrote:
> >> This patch deales with sparse memory model.
> >>
> >> For ARM32 platforms, different vendors may define different
> >> SECTION_SIZE_BITS, which we did not write to vmcore.
> >>
> >> For example:
> >>
> >>   1 arch/arm/mach-clps711x/include/mach/memory.h
> >>     #define SECTION_SIZE_BITS 24
> >>   2 arch/arm/mach-exynos/include/mach/memory.h
> >>     #define SECTION_SIZE_BITS 28
> >>   3 arch/arm/mach-sa1100/include/mach/memory.h
> >>     #define SECTION_SIZE_BITS 27
> > 
> > I wonder if this problem will eventually go away, or at least only
> > apply to older platforms, as ARM moves towards multiplatform: a single
> > kernel for more than one platform.
> 
> For ARM32 platform, it may cost a long time. And when glancing over
> the commit log of kernel, we can find this macro changed several times.
> The user space tools must take care of all these changed for compatibility.

Sure, that reasoning is fine by me.

> >> It is really a bad news for user space tools such as
> >> makedumpfile and crash, who have to defines them as
> >> macros. So for the same architecture, we may need to
> >> recomile them to parse vmcores with different
> >> SECTION_SIZE_BITS.
> >>
> >> And if we enable LPAE, MAX_PHYSMEM_SIZE can alse
> >> be variable.
> >>
> >> This patch adds these SECTION_SIZE_BITS and MAX_PHYSMEM_SIZE
> >> to vmcore. which makes user space tools more compatible.
> >>
> >> BTW, makedumpfile has queued the related patch.
> >>
> >> Signed-off-by: Liu Hua <sdu.liu at huawei.com>
> >> ---
> >>  kernel/kexec.c | 2 ++
> >>  1 file changed, 2 insertions(+)
> >>
> >> diff --git a/kernel/kexec.c b/kernel/kexec.c
> >> index bf0b929e..8b1a193 100644
> >> --- a/kernel/kexec.c
> >> +++ b/kernel/kexec.c
> >> @@ -1577,6 +1577,8 @@ static int __init crash_save_vmcoreinfo_init(void)
> >>  	VMCOREINFO_LENGTH(mem_section, NR_SECTION_ROOTS);
> >>  	VMCOREINFO_STRUCT_SIZE(mem_section);
> >>  	VMCOREINFO_OFFSET(mem_section, section_mem_map);
> >> +	VMCOREINFO_NUMBER(MAX_PHYSMEM_BITS);
> >> +	VMCOREINFO_NUMBER(SECTION_SIZE_BITS);
> >>  #endif
> >>  	VMCOREINFO_STRUCT_SIZE(page);
> >>  	VMCOREINFO_STRUCT_SIZE(pglist_data);
> >> -- 
> >> 1.9.0
> >>
> >>
> >> _______________________________________________
> >> kexec mailing list
> >> kexec at lists.infradead.org
> >> http://lists.infradead.org/mailman/listinfo/kexec
> >>
> > 
> > _______________________________________________
> > kexec mailing list
> > kexec at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/kexec
> > 
> > .
> > 
> 
> 
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
> 



More information about the kexec mailing list