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