aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-07-06 18:39:16 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-08-04 22:56:23 -0400
commitc196f76fd5ece716ee3b7fa5dda3576961c0cecc (patch)
tree7687dbae04327ed56bec60b21667eea66a9e52b4 /include
parentfef501d49d31f997a3381b6c1efd5bca382b6b6f (diff)
memblock: NUMA allocate can now use early_pfn_map
We now provide a default (weak) implementation of memblock_nid_range() which uses the early_pfn_map[] if CONFIG_ARCH_POPULATES_NODE_MAP is set. Sparc still needs to use its own method due to the way the pages can be scattered between nodes. This implementation is inefficient due to our main algorithm and callback construct wanting to work on an ascending addresses bases while early_pfn_map[] would rather work with nid's (it's unsorted at that stage). But it should work and we can look into improving it subsequently, possibly using arch compile options to chose a different algorithm alltogether. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/memblock.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index e5e8f9db3a84..82b030244aa7 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -47,6 +47,9 @@ extern long memblock_remove(phys_addr_t base, phys_addr_t size);
47extern long __init memblock_free(phys_addr_t base, phys_addr_t size); 47extern long __init memblock_free(phys_addr_t base, phys_addr_t size);
48extern long __init memblock_reserve(phys_addr_t base, phys_addr_t size); 48extern long __init memblock_reserve(phys_addr_t base, phys_addr_t size);
49 49
50/* The numa aware allocator is only available if
51 * CONFIG_ARCH_POPULATES_NODE_MAP is set
52 */
50extern phys_addr_t __init memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int nid); 53extern phys_addr_t __init memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int nid);
51extern phys_addr_t __init memblock_alloc(phys_addr_t size, phys_addr_t align); 54extern phys_addr_t __init memblock_alloc(phys_addr_t size, phys_addr_t align);
52 55