• Y
    x86,nobootmem: make alloc_bootmem_node fall back to other node when 32bit numa is used · b8ab9f82
    Yinghai Lu 提交于
    Borislav Petkov reported his 32bit numa system has problem:
    
    [    0.000000] Reserving total of 4c00 pages for numa KVA remap
    [    0.000000] kva_start_pfn ~ 32800 max_low_pfn ~ 375fe
    [    0.000000] max_pfn = 238000
    [    0.000000] 8202MB HIGHMEM available.
    [    0.000000] 885MB LOWMEM available.
    [    0.000000]   mapped low ram: 0 - 375fe000
    [    0.000000]   low ram: 0 - 375fe000
    [    0.000000] alloc (nid=8 100000 - 7ee00000) (1000000 - ffffffff) 1000 1000 => 34e7000
    [    0.000000] alloc (nid=8 100000 - 7ee00000) (1000000 - ffffffff) 200 40 => 34c9d80
    [    0.000000] alloc (nid=0 100000 - 7ee00000) (1000000 - ffffffffffffffff) 180 40 => 34e6140
    [    0.000000] alloc (nid=1 80000000 - c7e60000) (1000000 - ffffffffffffffff) 240 40 => 80000000
    [    0.000000] BUG: unable to handle kernel paging request at 40000000
    [    0.000000] IP: [<c2c8cff1>] __alloc_memory_core_early+0x147/0x1d6
    [    0.000000] *pdpt = 0000000000000000 *pde = f000ff53f000ff00
    ...
    [    0.000000] Call Trace:
    [    0.000000]  [<c2c8b4f8>] ? __alloc_bootmem_node+0x216/0x22f
    [    0.000000]  [<c2c90c9b>] ? sparse_early_usemaps_alloc_node+0x5a/0x10b
    [    0.000000]  [<c2c9149e>] ? sparse_init+0x1dc/0x499
    [    0.000000]  [<c2c79118>] ? paging_init+0x168/0x1df
    [    0.000000]  [<c2c780ff>] ? native_pagetable_setup_start+0xef/0x1bb
    
    looks like it allocates too much high address for bootmem.
    
    Try to cut limit with get_max_mapped()
    Reported-by: NBorislav Petkov <borislav.petkov@amd.com>
    Tested-by: NConny Seidel <conny.seidel@amd.com>
    Signed-off-by: NYinghai Lu <yinghai@kernel.org>
    Cc: <stable@kernel.org>		[2.6.34.x]
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Lee Schermerhorn <lee.schermerhorn@hp.com>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    b8ab9f82
page_alloc.c 150.3 KB