|
@@ -94,7 +94,7 @@ static long __init_memblock memblock_overlaps_region(struct memblock_type *type,
|
|
* @end: end of candidate range, can be %MEMBLOCK_ALLOC_{ANYWHERE|ACCESSIBLE}
|
|
* @end: end of candidate range, can be %MEMBLOCK_ALLOC_{ANYWHERE|ACCESSIBLE}
|
|
* @size: size of free area to find
|
|
* @size: size of free area to find
|
|
* @align: alignment of free area to find
|
|
* @align: alignment of free area to find
|
|
- * @nid: nid of the free area to find, %MAX_NUMNODES for any node
|
|
|
|
|
|
+ * @nid: nid of the free area to find, %NUMA_NO_NODE for any node
|
|
*
|
|
*
|
|
* Utility called from memblock_find_in_range_node(), find free area bottom-up.
|
|
* Utility called from memblock_find_in_range_node(), find free area bottom-up.
|
|
*
|
|
*
|
|
@@ -126,7 +126,7 @@ __memblock_find_range_bottom_up(phys_addr_t start, phys_addr_t end,
|
|
* @end: end of candidate range, can be %MEMBLOCK_ALLOC_{ANYWHERE|ACCESSIBLE}
|
|
* @end: end of candidate range, can be %MEMBLOCK_ALLOC_{ANYWHERE|ACCESSIBLE}
|
|
* @size: size of free area to find
|
|
* @size: size of free area to find
|
|
* @align: alignment of free area to find
|
|
* @align: alignment of free area to find
|
|
- * @nid: nid of the free area to find, %MAX_NUMNODES for any node
|
|
|
|
|
|
+ * @nid: nid of the free area to find, %NUMA_NO_NODE for any node
|
|
*
|
|
*
|
|
* Utility called from memblock_find_in_range_node(), find free area top-down.
|
|
* Utility called from memblock_find_in_range_node(), find free area top-down.
|
|
*
|
|
*
|
|
@@ -161,7 +161,7 @@ __memblock_find_range_top_down(phys_addr_t start, phys_addr_t end,
|
|
* @align: alignment of free area to find
|
|
* @align: alignment of free area to find
|
|
* @start: start of candidate range
|
|
* @start: start of candidate range
|
|
* @end: end of candidate range, can be %MEMBLOCK_ALLOC_{ANYWHERE|ACCESSIBLE}
|
|
* @end: end of candidate range, can be %MEMBLOCK_ALLOC_{ANYWHERE|ACCESSIBLE}
|
|
- * @nid: nid of the free area to find, %MAX_NUMNODES for any node
|
|
|
|
|
|
+ * @nid: nid of the free area to find, %NUMA_NO_NODE for any node
|
|
*
|
|
*
|
|
* Find @size free area aligned to @align in the specified range and node.
|
|
* Find @size free area aligned to @align in the specified range and node.
|
|
*
|
|
*
|
|
@@ -242,7 +242,7 @@ phys_addr_t __init_memblock memblock_find_in_range(phys_addr_t start,
|
|
phys_addr_t align)
|
|
phys_addr_t align)
|
|
{
|
|
{
|
|
return memblock_find_in_range_node(size, align, start, end,
|
|
return memblock_find_in_range_node(size, align, start, end,
|
|
- MAX_NUMNODES);
|
|
|
|
|
|
+ NUMA_NO_NODE);
|
|
}
|
|
}
|
|
|
|
|
|
static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
|
|
static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r)
|
|
@@ -754,7 +754,7 @@ int __init_memblock memblock_clear_hotplug(phys_addr_t base, phys_addr_t size)
|
|
/**
|
|
/**
|
|
* __next_free_mem_range - next function for for_each_free_mem_range()
|
|
* __next_free_mem_range - next function for for_each_free_mem_range()
|
|
* @idx: pointer to u64 loop variable
|
|
* @idx: pointer to u64 loop variable
|
|
- * @nid: node selector, %MAX_NUMNODES for all nodes
|
|
|
|
|
|
+ * @nid: node selector, %NUMA_NO_NODE for all nodes
|
|
* @out_start: ptr to phys_addr_t for start address of the range, can be %NULL
|
|
* @out_start: ptr to phys_addr_t for start address of the range, can be %NULL
|
|
* @out_end: ptr to phys_addr_t for end address of the range, can be %NULL
|
|
* @out_end: ptr to phys_addr_t for end address of the range, can be %NULL
|
|
* @out_nid: ptr to int for nid of the range, can be %NULL
|
|
* @out_nid: ptr to int for nid of the range, can be %NULL
|
|
@@ -782,6 +782,11 @@ void __init_memblock __next_free_mem_range(u64 *idx, int nid,
|
|
struct memblock_type *rsv = &memblock.reserved;
|
|
struct memblock_type *rsv = &memblock.reserved;
|
|
int mi = *idx & 0xffffffff;
|
|
int mi = *idx & 0xffffffff;
|
|
int ri = *idx >> 32;
|
|
int ri = *idx >> 32;
|
|
|
|
+ bool check_node = (nid != NUMA_NO_NODE) && (nid != MAX_NUMNODES);
|
|
|
|
+
|
|
|
|
+ if (nid == MAX_NUMNODES)
|
|
|
|
+ pr_warn_once("%s: Usage of MAX_NUMNODES is depricated. Use NUMA_NO_NODE instead\n",
|
|
|
|
+ __func__);
|
|
|
|
|
|
for ( ; mi < mem->cnt; mi++) {
|
|
for ( ; mi < mem->cnt; mi++) {
|
|
struct memblock_region *m = &mem->regions[mi];
|
|
struct memblock_region *m = &mem->regions[mi];
|
|
@@ -789,7 +794,7 @@ void __init_memblock __next_free_mem_range(u64 *idx, int nid,
|
|
phys_addr_t m_end = m->base + m->size;
|
|
phys_addr_t m_end = m->base + m->size;
|
|
|
|
|
|
/* only memory regions are associated with nodes, check it */
|
|
/* only memory regions are associated with nodes, check it */
|
|
- if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
|
|
|
|
|
|
+ if (check_node && nid != memblock_get_region_node(m))
|
|
continue;
|
|
continue;
|
|
|
|
|
|
/* scan areas before each reservation for intersection */
|
|
/* scan areas before each reservation for intersection */
|
|
@@ -830,7 +835,7 @@ void __init_memblock __next_free_mem_range(u64 *idx, int nid,
|
|
/**
|
|
/**
|
|
* __next_free_mem_range_rev - next function for for_each_free_mem_range_reverse()
|
|
* __next_free_mem_range_rev - next function for for_each_free_mem_range_reverse()
|
|
* @idx: pointer to u64 loop variable
|
|
* @idx: pointer to u64 loop variable
|
|
- * @nid: nid: node selector, %MAX_NUMNODES for all nodes
|
|
|
|
|
|
+ * @nid: nid: node selector, %NUMA_NO_NODE for all nodes
|
|
* @out_start: ptr to phys_addr_t for start address of the range, can be %NULL
|
|
* @out_start: ptr to phys_addr_t for start address of the range, can be %NULL
|
|
* @out_end: ptr to phys_addr_t for end address of the range, can be %NULL
|
|
* @out_end: ptr to phys_addr_t for end address of the range, can be %NULL
|
|
* @out_nid: ptr to int for nid of the range, can be %NULL
|
|
* @out_nid: ptr to int for nid of the range, can be %NULL
|
|
@@ -850,6 +855,11 @@ void __init_memblock __next_free_mem_range_rev(u64 *idx, int nid,
|
|
struct memblock_type *rsv = &memblock.reserved;
|
|
struct memblock_type *rsv = &memblock.reserved;
|
|
int mi = *idx & 0xffffffff;
|
|
int mi = *idx & 0xffffffff;
|
|
int ri = *idx >> 32;
|
|
int ri = *idx >> 32;
|
|
|
|
+ bool check_node = (nid != NUMA_NO_NODE) && (nid != MAX_NUMNODES);
|
|
|
|
+
|
|
|
|
+ if (nid == MAX_NUMNODES)
|
|
|
|
+ pr_warn_once("%s: Usage of MAX_NUMNODES is depricated. Use NUMA_NO_NODE instead\n",
|
|
|
|
+ __func__);
|
|
|
|
|
|
if (*idx == (u64)ULLONG_MAX) {
|
|
if (*idx == (u64)ULLONG_MAX) {
|
|
mi = mem->cnt - 1;
|
|
mi = mem->cnt - 1;
|
|
@@ -862,7 +872,7 @@ void __init_memblock __next_free_mem_range_rev(u64 *idx, int nid,
|
|
phys_addr_t m_end = m->base + m->size;
|
|
phys_addr_t m_end = m->base + m->size;
|
|
|
|
|
|
/* only memory regions are associated with nodes, check it */
|
|
/* only memory regions are associated with nodes, check it */
|
|
- if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m))
|
|
|
|
|
|
+ if (check_node && nid != memblock_get_region_node(m))
|
|
continue;
|
|
continue;
|
|
|
|
|
|
/* skip hotpluggable memory regions if needed */
|
|
/* skip hotpluggable memory regions if needed */
|
|
@@ -989,7 +999,7 @@ phys_addr_t __init memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int n
|
|
|
|
|
|
phys_addr_t __init __memblock_alloc_base(phys_addr_t size, phys_addr_t align, phys_addr_t max_addr)
|
|
phys_addr_t __init __memblock_alloc_base(phys_addr_t size, phys_addr_t align, phys_addr_t max_addr)
|
|
{
|
|
{
|
|
- return memblock_alloc_base_nid(size, align, max_addr, MAX_NUMNODES);
|
|
|
|
|
|
+ return memblock_alloc_base_nid(size, align, max_addr, NUMA_NO_NODE);
|
|
}
|
|
}
|
|
|
|
|
|
phys_addr_t __init memblock_alloc_base(phys_addr_t size, phys_addr_t align, phys_addr_t max_addr)
|
|
phys_addr_t __init memblock_alloc_base(phys_addr_t size, phys_addr_t align, phys_addr_t max_addr)
|