|
@@ -106,14 +106,17 @@ phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start,
|
|
|
if (end == MEMBLOCK_ALLOC_ACCESSIBLE)
|
|
|
end = memblock.current_limit;
|
|
|
|
|
|
- /* adjust @start to avoid underflow and allocating the first page */
|
|
|
- start = max3(start, size, (phys_addr_t)PAGE_SIZE);
|
|
|
+ /* avoid allocating the first page */
|
|
|
+ start = max_t(phys_addr_t, start, PAGE_SIZE);
|
|
|
end = max(start, end);
|
|
|
|
|
|
for_each_free_mem_range_reverse(i, nid, &this_start, &this_end, NULL) {
|
|
|
this_start = clamp(this_start, start, end);
|
|
|
this_end = clamp(this_end, start, end);
|
|
|
|
|
|
+ if (this_end < size)
|
|
|
+ continue;
|
|
|
+
|
|
|
cand = round_down(this_end - size, align);
|
|
|
if (cand >= this_start)
|
|
|
return cand;
|