[Crash-utility] [PATCH] display information about "struct page" on SPARSEMEM.
Ken'ichi Ohmichi
oomichi at mxs.nes.nec.co.jp
Mon Nov 5 02:40:27 UTC 2007
Hi Dave,
Dave Anderson wrote:
> > Dave Anderson wrote:
>> >> Ken'ichi Ohmichi wrote:
>> >>
>>> >>> Hi Dave,
>>> >>>
>>> >>> This patch fixes the problem that the crash utility cannot display
>>> >>> "struct page" information about SPARSEMEM (not SPARSEMEM_EXTREME)
>>> >>> properly.
>>> >>>
>>> >>> The symbol mem_section is defined as the pointer array in
>>> >>> SPARSEMEM_EXTREME.
>>> >>> On the other hand, SPARSEMEM's one is defined as the array of structure
>>> >>> mem_section like the following:
>>> >>>
>>> >>> linux-2.6.23/mm/sparse.c:18L
>>> >>> #ifdef CONFIG_SPARSEMEM_EXTREME
>>> >>> struct mem_section *mem_section[NR_SECTION_ROOTS]
>>> >>> ____cacheline_internodealigned_in_smp;
>>> >>> #else
>>> >>> struct mem_section mem_section[NR_SECTION_ROOTS][SECTIONS_PER_ROOT]
>>> >>> ____cacheline_internodealigned_in_smp;
>>> >>> #endif
>>> >>> EXPORT_SYMBOL(mem_section);
>>> >>>
>>> >>> The crash utility considers SPARSEMEM's one to be the pointer array,
>>> >>> but it is wrong. This patch fixes it.
>>> >>>
>> >>
>> >> Interesting, I've never seen this problem before on any
>> >> SPARSEMEM kernels. But perhaps the original contributor
>> >> of this patch, and myself, have never run a kernel configured
>> >> with CONFIG_SPARSEMEM (i.e., only with CONFIG_SPARSEMEM_EXTREME)?
>> >> (I don't have any dumpfiles to check)
> >
> > Hi Ken'ichi,
> >
> > I take that back -- I do have several x86_64 RHEL5 dumpfiles, and
> > as I suspected, all of them are CONFIG_SPARSEMEM_EXTREME. So it
> > appears that the CONFIG_SPARSEMEM configuration was never tested?
I have tested this patch on some i386 SPARSEMEM kernels.
non_EXTREME is represented as SPARSEMEM_STATIC on linux source code,
and SPARSEMEM_STATIC is effective on i386 and mips only:
2.6.18-53.el5/arch/i386/Kconfig:616L
config ARCH_SPARSEMEM_ENABLE
def_bool y
depends on (NUMA || (X86_PC && EXPERIMENTAL))
select SPARSEMEM_STATIC
2.6.18-53.el5/arch/mips/Kconfig:1695L
config ARCH_SPARSEMEM_ENABLE
bool
select SPARSEMEM_STATIC
> > Also, when I was looking at your patch without the full context,
> > I did not see that the code already has an if-else for the two
> > configurations, and that you are only changing the CONFIG_SPARSEMEM
> > section. Sorry for the confusion...
> >
> > I appreciate your fixing this -- it's queued for the next release.
Thank you for applying :-)
Thanks
Ken'ichi Ohmichi
More information about the Crash-utility
mailing list