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 <tangc...@cn.fujitsu.com> --- 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 from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/