Dne Út 10. ledna 2012 19:23:24 Petr Tesarik napsal(a):
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
BTW the data from struct page is really missing here. I traced this down to an
integer overflow in dump_memory_nodes():
node_start_paddr = PTOB(node_start_pfn);
David (Mair), could you address this, as already discussed in private mails,
please?
TIA,
Petr Tesarik
SUSE Linux