[Crash-utility] Re: Cannot open dump when using 2G/2G memory split with 2.6.27.21 SMP x86 kernel

Dave Anderson anderson at redhat.com
Wed May 27 13:49:01 UTC 2009


----- "Tero Pirkkanen" <tp at pirkkanen.net> wrote:

> 
> Hello
> 
> I've been trying to open crashdump produced by 2.6.27.21 SMP kernel
> with 2G memory split without luck.
> I tried to generate the dump by copying from /proc/vmcore and with
> makedumpfile 1.3.3. Both without success.
> The crash works fine with uniprocessor kernel as well as SMP kernel
> using standard memory split. Architecture is 32bit x86 and the crash
> was generated inside vmware server 2.0.
> 
> Is this supported configuration? Have anybody tried crash dump with 2G
> split in recent 2.6.x kernels?

Apparently not -- at least I've never tried it...

But looking at the output, it's failing to read simple unity-mapped
memory, which I presume to be due to a failure to calculate the
correct machdep->kvbase in x86.c:x86_init() here at line 1740:

  machdep->kvbase = symbol_value("_stext") & ~KVBASE_MASK;

And based upon that value, whenever an x86 unity-mapped kernel 
virtual address is requested, it simply does this to find the physical
address:

  #define VTOP(X)            ((unsigned long)(X)-(machdep->kvbase))

And given that the initial set of data accesses are all simply
unity-mapped addresses and the data that is being read is obviously
junk (presuming that you don't have 32 online cpus): 

> .... skip to end
> <readmem: 8053f700, KVADDR, "kernel_config_data", 32768, (ROE), a5f17c0>
> WARNING: could not find MAGIC_START!
> <readmem: 807348c0, KVADDR, "cpu_possible_map", 4, (ROE), 8430680>
> cpu_possible_map: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> 21 22 23 24 25 26 27 28 29 30 31
> <readmem: 806c478c, KVADDR, "cpu_present_map", 4, (ROE), 8430680>
> cpu_present_map: 3 7 8 9 10 14 18 19 21 22 31
> <readmem: 806c42a0, KVADDR, "cpu_online_map", 4, (ROE), 8430680>
> cpu_online_map: 8 9 14 18 19 21 22 31
> <readmem: 807506e0, KVADDR, "xtime", 8, (FOE), 8408d38>
> <readmem: 80679e84, KVADDR, "init_uts_ns", 390, (ROE), 840931c>
> crash: cannot determine base kernel version
> <readmem: 8053a000, KVADDR, "accessible check", 4, (ROE|Q), ff96df04>
> <readmem: 8053a000, KVADDR, "readstring characters", 1499, (ROE|Q), ff96cf00>
> linux_banner:
> &y �&y �&y �(z �]z �jz ��z �a� �f� ��� �� ��� �9� �� �0� �6� �<� �Њ
> �B� �H� �N� �
> crash: s3/boot/vmlinux-2.6.27.21+smp-syms and
> kerneldump-20090526-140502 do not match

So it looks to be a miscalculation of machdep->kvbase.

If you take the same dumpfile above, but use -d8 instead of -d7, you'll
also see the translated physical address after each "readmem" line
above.  

In any case, first determine what's machdep->kvbase is being set
to -- I'm presuming that it should be 0x8000000, but maybe not?

Dave




More information about the Crash-utility mailing list