set_page_links(pfn_to_page(pfn), zid, nid, pfn);
 }
 
+/* Can fail with -ENOMEM from allocating a wait table with vmalloc() or
+ * alloc_bootmem_node_nopanic() */
+static int __ref ensure_zone_is_initialized(struct zone *zone,
+                       unsigned long start_pfn, unsigned long num_pages)
+{
+       if (!zone_is_initialized(zone))
+               return init_currently_empty_zone(zone, start_pfn, num_pages,
+                                                MEMMAP_HOTPLUG);
+       return 0;
+}
+
 static int __meminit move_pfn_range_left(struct zone *z1, struct zone *z2,
                unsigned long start_pfn, unsigned long end_pfn)
 {