[Crash-utility] x86 remap allocator in kernel 3.0
Petr Tesarik
ptesarik at suse.cz
Wed Jan 11 13:53:21 UTC 2012
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
More information about the Crash-utility
mailing list