In memblock_find_in_range_node(), it has the following check at line 117 and 118: 113 for_each_free_mem_range_reverse(i, nid, &this_start, &this_end, NULL) { 114 this_start = clamp(this_start, start, end); 115 this_end = clamp(this_end, start, end); 116 117 if (this_end < size) 118 continue; 119 120 cand = round_down(this_end - size, align); 121 if (cand >= this_start) 122 return cand; 123 } Since it finds memory from higher memory downwards, if this_end < size, we can break because the rest memory will all under size. It won't satisfy us ang more. Furthermore, we don't need to check "if (this_end < size)" actually. Without this confusing check, we only waste some loops. So this patch removes the check. Signed-off-by: Tang Chen <tangchen@xxxxxxxxxxxxxx> --- mm/memblock.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/mm/memblock.c b/mm/memblock.c index a847bfe..e0c626e 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -114,9 +114,6 @@ phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start, 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; -- 1.7.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>