struct pglist_data *pgdat = NODE_DATA(0);
        unsigned long zones_size[MAX_NR_ZONES] = {0, };
 
-       empty_zero_page      = (unsigned long) alloc_bootmem_pages(PAGE_SIZE);
+       empty_zero_page      = (unsigned long) memblock_alloc(PAGE_SIZE,
+                                                             PAGE_SIZE);
        memset((void *)empty_zero_page, 0, PAGE_SIZE);
 
        /*
 
         * Initialize the bad page table and bad page to point
         * to a couple of allocated pages.
         */
-       empty_zero_page = (unsigned long)alloc_bootmem_pages(PAGE_SIZE);
+       empty_zero_page = (unsigned long)memblock_alloc(PAGE_SIZE, PAGE_SIZE);
        memset((void *)empty_zero_page, 0, PAGE_SIZE);
 
        /*
 
 
        high_memory = (void *) end_mem;
 
-       empty_zero_page = alloc_bootmem_pages(PAGE_SIZE);
+       empty_zero_page = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
 
        /*
         * Set up SFC/DFC registers (user data space).
 
        enum zone_type zone;
        int i;
 
-       empty_zero_page = (void *) alloc_bootmem_pages(PAGE_SIZE);
+       empty_zero_page = (void *) memblock_alloc(PAGE_SIZE, PAGE_SIZE);
        memset((void *) empty_zero_page, 0, PAGE_SIZE);
 
        pg_dir = swapper_pg_dir;
 
        size = num_pages * sizeof(pte_t);
        size = (size + PAGE_SIZE) & ~(PAGE_SIZE-1);
-       next_pgtable = (unsigned long) alloc_bootmem_pages(size);
+       next_pgtable = (unsigned long) memblock_alloc(size, PAGE_SIZE);
 
        bootmem_end = (next_pgtable + size + PAGE_SIZE) & PAGE_MASK;
        pg_dir += PAGE_OFFSET >> PGDIR_SHIFT;
 
         * initialize the bad page table and bad page to point
         * to a couple of allocated pages
         */
-       empty_zero_page = alloc_bootmem_pages(PAGE_SIZE);
+       empty_zero_page = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
 
        /*
         * Set up SFC/DFC registers
 
        unsigned long zones_size[MAX_NR_ZONES] = { 0, };
        unsigned long size;
 
-       empty_zero_page = alloc_bootmem_pages(PAGE_SIZE);
+       empty_zero_page = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
 
        address = PAGE_OFFSET;
        pg_dir = swapper_pg_dir;
        size = num_pages * sizeof(pte_t);
        size = (size + PAGE_SIZE) & ~(PAGE_SIZE-1);
 
-       next_pgtable = (unsigned long)alloc_bootmem_pages(size);
+       next_pgtable = (unsigned long)memblock_alloc(size, PAGE_SIZE);
        bootmem_end = (next_pgtable + size + PAGE_SIZE) & PAGE_MASK;
 
        /* Map whole memory from PAGE_OFFSET (0x0E000000) */
 
        if (pud_none(*pud)) {
                pmd_t *pmd;
 
-               pmd = alloc_bootmem_pages(PAGE_SIZE);
+               pmd = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
                pud_populate(&init_mm, pud, pmd);
                BUG_ON(pmd != pmd_offset(pud, 0));
        }
        if (pmd_none(*pmd)) {
                pte_t *pte;
 
-               pte = alloc_bootmem_pages(PAGE_SIZE);
+               pte = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
                pmd_populate_kernel(&init_mm, pmd, pte);
                BUG_ON(pte != pte_offset_kernel(pmd, 0));
        }
 
 #ifdef CONFIG_X86_32
 fake_ioapic_page:
 #endif
-                       ioapic_phys = (unsigned long)alloc_bootmem_pages(PAGE_SIZE);
+                       ioapic_phys = (unsigned long)memblock_alloc(PAGE_SIZE,
+                                                                   PAGE_SIZE);
                        ioapic_phys = __pa(ioapic_phys);
                }
                set_fixmap_nocache(idx, ioapic_phys);
 
        if (after_bootmem)
                ptr = (void *) get_zeroed_page(GFP_ATOMIC);
        else
-               ptr = alloc_bootmem_pages(PAGE_SIZE);
+               ptr = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
 
        if (!ptr || ((unsigned long)ptr & ~PAGE_MASK)) {
                panic("set_pte_phys: cannot allocate page data %s\n",
 
         * Get IO TLB memory from any location.
         */
        if (early)
-               xen_io_tlb_start = alloc_bootmem_pages(PAGE_ALIGN(bytes));
+               xen_io_tlb_start = memblock_alloc(PAGE_ALIGN(bytes),
+                                                 PAGE_SIZE);
        else {
 #define SLABS_PER_PAGE (1 << (PAGE_SHIFT - IO_TLB_SHIFT))
 #define IO_TLB_MIN_SLABS ((1<<20) >> IO_TLB_SHIFT)