[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