|
@@ -404,8 +404,15 @@ int online_pages(unsigned long pfn, unsigned long nr_pages)
|
|
if (!populated_zone(zone))
|
|
if (!populated_zone(zone))
|
|
need_zonelists_rebuild = 1;
|
|
need_zonelists_rebuild = 1;
|
|
|
|
|
|
- walk_memory_resource(pfn, nr_pages, &onlined_pages,
|
|
|
|
|
|
+ ret = walk_memory_resource(pfn, nr_pages, &onlined_pages,
|
|
online_pages_range);
|
|
online_pages_range);
|
|
|
|
+ if (ret) {
|
|
|
|
+ printk(KERN_DEBUG "online_pages %lx at %lx failed\n",
|
|
|
|
+ nr_pages, pfn);
|
|
|
|
+ memory_notify(MEM_CANCEL_ONLINE, &arg);
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
zone->present_pages += onlined_pages;
|
|
zone->present_pages += onlined_pages;
|
|
zone->zone_pgdat->node_present_pages += onlined_pages;
|
|
zone->zone_pgdat->node_present_pages += onlined_pages;
|
|
|
|
|