Merge branch 'for-2.6.26' of git://git.kernel.dk/linux-2.6-block
[pandora-kernel.git] / mm / sparse-vmemmap.c
index 22620f6..99c4f36 100644 (file)
  * or to back the page tables that are used to create the mapping.
  * Uses the main allocators if they are available, else bootmem.
  */
+
+static void * __init_refok __earlyonly_bootmem_alloc(int node,
+                               unsigned long size,
+                               unsigned long align,
+                               unsigned long goal)
+{
+       return __alloc_bootmem_node(NODE_DATA(node), size, align, goal);
+}
+
+
 void * __meminit vmemmap_alloc_block(unsigned long size, int node)
 {
        /* If the main allocator is up use that, fallback to bootmem. */
@@ -44,7 +54,7 @@ void * __meminit vmemmap_alloc_block(unsigned long size, int node)
                        return page_address(page);
                return NULL;
        } else
-               return __alloc_bootmem_node(NODE_DATA(node), size, size,
+               return __earlyonly_bootmem_alloc(node, size, size,
                                __pa(MAX_DMA_ADDRESS));
 }
 
@@ -66,7 +76,7 @@ pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node)
                pte_t entry;
                void *p = vmemmap_alloc_block(PAGE_SIZE, node);
                if (!p)
-                       return 0;
+                       return NULL;
                entry = pfn_pte(__pa(p) >> PAGE_SHIFT, PAGE_KERNEL);
                set_pte_at(&init_mm, addr, pte, entry);
        }
@@ -79,7 +89,7 @@ pmd_t * __meminit vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node)
        if (pmd_none(*pmd)) {
                void *p = vmemmap_alloc_block(PAGE_SIZE, node);
                if (!p)
-                       return 0;
+                       return NULL;
                pmd_populate_kernel(&init_mm, pmd, p);
        }
        return pmd;
@@ -91,7 +101,7 @@ pud_t * __meminit vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node)
        if (pud_none(*pud)) {
                void *p = vmemmap_alloc_block(PAGE_SIZE, node);
                if (!p)
-                       return 0;
+                       return NULL;
                pud_populate(&init_mm, pud, p);
        }
        return pud;
@@ -103,7 +113,7 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node)
        if (pgd_none(*pgd)) {
                void *p = vmemmap_alloc_block(PAGE_SIZE, node);
                if (!p)
-                       return 0;
+                       return NULL;
                pgd_populate(&init_mm, pgd, p);
        }
        return pgd;