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 >