[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