[Crash-utility] [PATCH] Support linux-2.6.26 sparsemem kernel on i386.

Dave Anderson anderson at redhat.com
Thu Oct 16 14:01:28 UTC 2008


----- "Ken'ichi Ohmichi" <oomichi at mxs.nes.nec.co.jp> wrote:

> Hi Dave,
> 
> When 'kmem -p'/'kmem -i' is executed on i386 linux-2.6.26 sparsemem
> kernel,
> current crash utility misunderstands the number of struct page in
> each
> section and refers invalid struct page.
> 
> The cause is that SECTION_SIZE_BITS of PAE has been changed to 29 from
> 30
> since linux-2.6.26 by the following:
> 
> [PATCH 3 of 4] sparsemem: reduce i386 PAE section size
> http://www.uwsg.iu.edu/hypermail/linux/kernel/0803.3/1882.html
> 
> If applying the attached patch, the crash utility can catch up the
> above change. It makes the results of both 'kmem -p' and 'kmem -i'
> correct. The attached patch is for crash-4.0-7.4.
> 
> There is the same problem in makedumpfile, and I will fix it :-)
> 
> 
> Thanks
> Ken'ichi Ohmichi

Thanks Ken'ichi -- it's queued for the next release.

Dave


> 
> Signed-off-by: Ken'ichi Ohmichi <oomichi at mxs.nes.nec.co.jp>
> ---
> diff -rpuN crash-4.0-7.4.orig/defs.h crash-4.0-7.4/defs.h
> --- crash-4.0-7.4.orig/defs.h	2008-10-16 17:32:46.000000000 +0900
> +++ crash-4.0-7.4/defs.h	2008-10-16 17:46:30.000000000 +0900
> @@ -2069,7 +2069,8 @@ struct load_module {
>  #define TIF_SIGPENDING  (2)
>  
>  // CONFIG_X86_PAE 
> -#define _SECTION_SIZE_BITS_PAE	30
> +#define _SECTION_SIZE_BITS_PAE_ORIG	30
> +#define _SECTION_SIZE_BITS_PAE_2_6_26	29
>  #define _MAX_PHYSMEM_BITS_PAE	36
>  
>  // !CONFIG_X86_PAE   
> diff -rpuN crash-4.0-7.4.orig/x86.c crash-4.0-7.4/x86.c
> --- crash-4.0-7.4.orig/x86.c	2008-10-16 17:32:46.000000000 +0900
> +++ crash-4.0-7.4/x86.c	2008-10-16 17:47:58.000000000 +0900
> @@ -1819,7 +1819,12 @@ x86_init(int when)
>  		}
>  
>  		if (machdep->flags & PAE) {
> -			machdep->section_size_bits = _SECTION_SIZE_BITS_PAE;
> +			if (THIS_KERNEL_VERSION < LINUX(2,6,26))
> +				machdep->section_size_bits =
> +					_SECTION_SIZE_BITS_PAE_ORIG;
> +			else
> +				machdep->section_size_bits =
> +					_SECTION_SIZE_BITS_PAE_2_6_26;
>  			machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_PAE;
>  		} else {
>  			machdep->section_size_bits = _SECTION_SIZE_BITS;
> _
> 
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility




More information about the Crash-utility mailing list