• Andy Whitcroft's avatar
    [PATCH] flatmem split out memory model · 2bdaf115
    Andy Whitcroft authored
    There are three places we define pfn_to_nid().  Two in linux/mmzone.h and one
    in asm/mmzone.h.  These in essence represent the three memory models.  The
    definition in linux/mmzone.h under !NEED_MULTIPLE_NODES is both the FLATMEM
    definition and the optimisation for single NUMA nodes; the one under SPARSEMEM
    is the NUMA sparsemem one; the one in asm/mmzone.h under DISCONTIGMEM is the
    discontigmem one.  This is not in the least bit obvious, particularly the
    connection between the non-NUMA optimisations and the memory models.
    
    Two patches:
    
    flatmem-split-out-memory-model: simplifies the selection of pfn_to_nid()
    implementations.  The selection is based primarily off the memory model
    selected.  Optimisations for non-NUMA are applied where needed.
    
    sparse-provide-pfn_to_nid: implement pfn_to_nid() for SPARSEMEM
    
    This patch:
    
    pfn_to_nid is memory model specific
    
    The pfn_to_nid() call is memory model specific.  It represents the locality
    identifier for the memory passed.  Classically this would be a NUMA node,
    but not a chunk of memory under DISCONTIGMEM.
    
    The SPARSEMEM and FLATMEM memory model non-NUMA versions of pfn_to_nid()
    are folded together under NEED_MULTIPLE_NODES, while DISCONTIGMEM has its
    own optimisation.  This is all very confusing.
    
    This patch splits out each implementation of pfn_to_nid() so that we can
    see them and the optimisations to each.
    Signed-off-by: default avatarAndy Whitcroft <apw@shadowen.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    2bdaf115
mmzone.h 18.3 KB