|
@@ -1033,22 +1033,35 @@ int __init_memblock memblock_set_node(phys_addr_t base, phys_addr_t size,
|
|
|
}
|
|
|
#endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
|
|
|
|
|
|
-static phys_addr_t __init memblock_alloc_base_nid(phys_addr_t size,
|
|
|
- phys_addr_t align, phys_addr_t max_addr,
|
|
|
- int nid)
|
|
|
+static phys_addr_t __init memblock_alloc_range_nid(phys_addr_t size,
|
|
|
+ phys_addr_t align, phys_addr_t start,
|
|
|
+ phys_addr_t end, int nid)
|
|
|
{
|
|
|
phys_addr_t found;
|
|
|
|
|
|
if (!align)
|
|
|
align = SMP_CACHE_BYTES;
|
|
|
|
|
|
- found = memblock_find_in_range_node(size, align, 0, max_addr, nid);
|
|
|
+ found = memblock_find_in_range_node(size, align, start, end, nid);
|
|
|
if (found && !memblock_reserve(found, size))
|
|
|
return found;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+phys_addr_t __init memblock_alloc_range(phys_addr_t size, phys_addr_t align,
|
|
|
+ phys_addr_t start, phys_addr_t end)
|
|
|
+{
|
|
|
+ return memblock_alloc_range_nid(size, align, start, end, NUMA_NO_NODE);
|
|
|
+}
|
|
|
+
|
|
|
+static phys_addr_t __init memblock_alloc_base_nid(phys_addr_t size,
|
|
|
+ phys_addr_t align, phys_addr_t max_addr,
|
|
|
+ int nid)
|
|
|
+{
|
|
|
+ return memblock_alloc_range_nid(size, align, 0, max_addr, nid);
|
|
|
+}
|
|
|
+
|
|
|
phys_addr_t __init memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int nid)
|
|
|
{
|
|
|
return memblock_alloc_base_nid(size, align, MEMBLOCK_ALLOC_ACCESSIBLE, nid);
|