if (bestnode == -1)
                bestnode = anynode;
 
-       ptr = __alloc_bootmem_node(pgdat_list[bestnode], pernodesize,
-               PERCPU_PAGE_SIZE, __pa(MAX_DMA_ADDRESS));
+       ptr = memblock_alloc_try_nid(pernodesize, PERCPU_PAGE_SIZE,
+                                    __pa(MAX_DMA_ADDRESS),
+                                    BOOTMEM_ALLOC_ACCESSIBLE,
+                                    bestnode);
 
        return ptr;
 }
 
 
 static void * __init pcpu_fc_alloc(unsigned int cpu, size_t size, size_t align)
 {
-       return __alloc_bootmem_node(NODE_DATA(early_cpu_to_node(cpu)), size, align,
-                                   __pa(MAX_DMA_ADDRESS));
+       return memblock_alloc_try_nid(size, align, __pa(MAX_DMA_ADDRESS),
+                                     BOOTMEM_ALLOC_ACCESSIBLE,
+                                     early_cpu_to_node(cpu));
+
 }
 
 static void __init pcpu_fc_free(void *ptr, size_t size)
 
        for_each_possible_cpu(i) {
                node = cpu_to_node(i);
 
-               softirq_stack[i] = __alloc_bootmem_node(NODE_DATA(node),
-                                                       THREAD_SIZE,
-                                                       THREAD_SIZE, 0);
-               hardirq_stack[i] = __alloc_bootmem_node(NODE_DATA(node),
-                                                       THREAD_SIZE,
-                                                       THREAD_SIZE, 0);
+               softirq_stack[i] = memblock_alloc_node(THREAD_SIZE,
+                                                      THREAD_SIZE, node);
+               hardirq_stack[i] = memblock_alloc_node(THREAD_SIZE,
+                                                      THREAD_SIZE, node);
        }
 }
 
 
                pr_debug("per cpu data for cpu%d %lu bytes at %016lx\n",
                         cpu, size, __pa(ptr));
        } else {
-               ptr = __alloc_bootmem_node(NODE_DATA(node),
-                                          size, align, goal);
+               ptr = memblock_alloc_try_nid(size, align, goal,
+                                            BOOTMEM_ALLOC_ACCESSIBLE, node);
                pr_debug("per cpu data for cpu%d %lu bytes on node%d at "
                         "%016lx\n", cpu, size, node, __pa(ptr));
        }