• Dave Hansen's avatar
    [PATCH] no arch-specific mem_map init · ecce8424
    Dave Hansen authored
    So, this patch started out with me trying to keep from passing contiguous,
    node-specific mem_map into free_area_init_node() and cousins.  Instead, I
    relied on some calls to pfn_to_page().
    
    This works fine and dandy when all you need is the pgdat->node_mem_map to
    do pfn_to_page().  However, the non-NUMA/DISCONTIG architectures use the
    real, global mem_map[] instead of a node_mem_map in the pfn_to_page()
    calculation.  So, I ended up effectively trying to initialize mem_map from
    itself, when it was NULL.  That was bad, and caused some very pretty colors
    on someone's screen when he tested it.
    
    So, I had to make sure to initialize the global mem_map[] before calling
    into free_area_init_node().  Then, I realized how many architectures do
    this on their own, and have comments like this:
    
            /* XXX: MRB-remove - this doesn't seem sane, should this be done somewhere else ?*/
            mem_map = NODE_DATA(0)->node_mem_map;
    
    The following patch does what my first one did (don't pass mem_map into the
    init functions), incorporates Jesse Barnes' ia64 fixes on top of that, and
    gets rid of all but one of the global mem_map initializations (parisc is
    weird).  It also magically removes more code than it adds.  It could be
    smaller, but I shamelessly added some comments. 
    
    Boot-tested on ppc64, i386 (NUMAQ, plain SMP, laptop), UML (i386).
    Signed-off-by: default avatarDave Hansen <haveblue@us.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    ecce8424
srmmu.c 67.1 KB