From 3d03f17655ec322ab871b0eb2c28cb18c23e4582 Mon Sep 17 00:00:00 2001 From: Wanpeng Li Date: Fri, 28 Sep 2012 10:19:43 +1000 Subject: [PATCH] mm/memblock: reduce overhead in binary search When checking that the indicated address belongs to the memory region, the memory regions are checked one by one through a binary search, which will be time consuming. If the indicated address isn't in the memory region, then we needn't do the time-consuming search. Add a check on the indicated address for that purpose. Signed-off-by: Wanpeng Li Cc: Michal Hocko Cc: KAMEZAWA Hiroyuki Cc: Minchan Kim Cc: Gavin Shan Cc: Yinghai Lu Signed-off-by: Andrew Morton --- mm/memblock.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mm/memblock.c b/mm/memblock.c index 82aa349d2f7a..d48985e533eb 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -888,6 +888,11 @@ int __init memblock_is_reserved(phys_addr_t addr) int __init_memblock memblock_is_memory(phys_addr_t addr) { + + if (unlikely(addr < memblock_start_of_DRAM() || + addr >= memblock_end_of_DRAM())) + return 0; + return memblock_search(&memblock.memory, addr) != -1; } -- 2.39.2