• David S. Miller's avatar
    [LMB] Add lmb_alloc_nid() · c50f68c8
    David S. Miller authored
    A variant of lmb_alloc() that tries to allocate memory on a specified
    NUMA node 'nid' but falls back to normal lmb_alloc() if that fails.
    
    The caller provides a 'nid_range' function pointer which assists the
    allocator.  It is given args 'start', 'end', and pointer to integer
    'this_nid'.
    
    It places at 'this_nid' the NUMA node id that corresponds to 'start',
    and returns the end address within 'start' to 'end' at which memory
    assosciated with 'nid' ends.
    
    This callback allows a platform to use lmb_alloc_nid() in just
    about any context, even ones in which early_pfn_to_nid() might
    not be working yet.
    
    This function will be used by the NUMA setup code on sparc64, and also
    it can be used by powerpc, replacing it's hand crafted
    "careful_allocation()" function in arch/powerpc/mm/numa.c
    
    If x86 ever converts it's NUMA support over to using the LMB helpers,
    it can use this too as it has something entirely similar.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    c50f68c8
lmb.c 9.74 KB