Dne Út 10. ledna 2012 19:14:32 Petr Tesarik napsal(a):
Hi folks,
I've just discovered that the crash utility fails to initialize the vm
subsystem properly on our latest SLES 32-bit kernels. It turns out that our
kernels are compiled with CONFIG_DISCONTIGMEM=y, which causes pgdat structs
to be allocated by the remap allocator (cf. arch/x86/mm/numa_32.c and also
the code in setup_node_data).
Ah, I forgot a test case. I ran this on kernel-pae-3.0.13-0.5:
crash> kmem -n
[...]
NODE SIZE PGLIST_DATA BOOTMEM_DATA NODE_ZONES
1 1048576 f2800080 ---- f2800080
^^^^^^^^
Take this:
crash> vtop f2800080
VIRTUAL PHYSICAL
f2800080 1fde00080
PAGE DIRECTORY: c08ed000
PGD: c08ed018 => 8ea001
PMD: 8eaca0 => 80000001fde001e3
PAGE: 1fde00000 (2MB)
PTE PHYSICAL FLAGS
80000001fde001e3 1fde00000 (PRESENT|RW|ACCESSED|DIRTY|PSE|GLOBAL|NX)
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
Without the patch, the output begins like this:
crash> vtop f2800080
VIRTUAL PHYSICAL
f2800080 32800080 <----- note the incorrect physical address
[...]
Petr Tesarik
SUSE Linux