memblock/arm: pfn_valid uses memblock_is_memory()
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 4 Aug 2010 03:23:02 +0000 (13:23 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 4 Aug 2010 04:38:55 +0000 (14:38 +1000)
The implementation is pretty much similar. There is a -small- added
overhead by having another function call and the address shift.

If that becomes a concern, I suppose we could actually have memblock
itself expose a memblock_pfn_valid() which then ARM can use directly
with an appropriate #define...

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/arm/mm/init.c

index d1496e6..e739223 100644 (file)
@@ -237,20 +237,7 @@ static void __init arm_bootmem_free(struct meminfo *mi, unsigned long min,
 #ifndef CONFIG_SPARSEMEM
 int pfn_valid(unsigned long pfn)
 {
-       struct memblock_type *mem = &memblock.memory;
-       unsigned int left = 0, right = mem->cnt;
-
-       do {
-               unsigned int mid = (right + left) / 2;
-
-               if (pfn < memblock_start_pfn(mem, mid))
-                       right = mid;
-               else if (pfn >= memblock_end_pfn(mem, mid))
-                       left = mid + 1;
-               else
-                       return 1;
-       } while (left < right);
-       return 0;
+       return memblock_is_memory(pfn << PAGE_SHIFT);
 }
 EXPORT_SYMBOL(pfn_valid);