OSDN Git Service

powerpc: prefer memblock APIs returning virtual address
[uclinux-h8/linux.git] / arch / powerpc / mm / pgtable-radix.c
index dced3cd..e377684 100644 (file)
@@ -51,26 +51,15 @@ static int native_register_process_table(unsigned long base, unsigned long pg_sz
 static __ref void *early_alloc_pgtable(unsigned long size, int nid,
                        unsigned long region_start, unsigned long region_end)
 {
-       unsigned long pa = 0;
-       void *pt;
+       phys_addr_t min_addr = MEMBLOCK_LOW_LIMIT;
+       phys_addr_t max_addr = MEMBLOCK_ALLOC_ANYWHERE;
 
-       if (region_start || region_end) /* has region hint */
-               pa = memblock_alloc_range(size, size, region_start, region_end,
-                                               MEMBLOCK_NONE);
-       else if (nid != -1) /* has node hint */
-               pa = memblock_alloc_base_nid(size, size,
-                                               MEMBLOCK_ALLOC_ANYWHERE,
-                                               nid, MEMBLOCK_NONE);
+       if (region_start)
+               min_addr = region_start;
+       if (region_end)
+               max_addr = region_end;
 
-       if (!pa)
-               pa = memblock_alloc_base(size, size, MEMBLOCK_ALLOC_ANYWHERE);
-
-       BUG_ON(!pa);
-
-       pt = __va(pa);
-       memset(pt, 0, size);
-
-       return pt;
+       return memblock_alloc_try_nid(size, size, min_addr, max_addr, nid);
 }
 
 static int early_map_kernel_page(unsigned long ea, unsigned long pa,