• Andy Whitcroft's avatar
    sparsemem: ensure we initialise the node mapping for SPARSEMEM_STATIC · 85770ffe
    Andy Whitcroft authored
    Booting SPARSEMEM on NUMA systems trips a BUG in page_alloc.c:
    
    	Initializing HighMem for node 0 (00038000:00100000)
    	Initializing HighMem for node 1 (00100000:001ffe00)
    	------------[ cut here ]------------
    	kernel BUG at /home/apw/git/linux-2.6/mm/page_alloc.c:456!
    	[...]
    
    This occurs because the section to node id mapping is not being
    setup correctly during init under SPARSEMEM_STATIC, leading to an
    attempt to free pages from all nodes into the zones on node 0.
    
    When the zone_table[] was removed in the following commit, a new
    section to node mapping table was introduced:
    
        commit 89689ae7
        [PATCH] Get rid of zone_table[]
    
    That conversion inadvertantly only initialised the node mapping in
    SPARSEMEM_EXTREME.  Ensure we initialise the node mapping in
    SPARSEMEM_STATIC.
    
    [akpm@linux-foundation.org: make the stubs static inline]
    Signed-off-by: default avatarAndy Whitcroft <apw@shadowen.org>
    Cc: Christoph Lameter <clameter@sgi.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    85770ffe
sparse.c 8.28 KB