cpuidle: menu governor: reduce latency on exit
[linux-block.git] / mm / memory_hotplug.c
index e4412a676c88494ec313ebb3e974d2d71ee5c525..efe3e0ec2e614c4a8f132ea8669fb63e274e5140 100644 (file)
@@ -339,8 +339,11 @@ EXPORT_SYMBOL_GPL(__remove_pages);
 
 void online_page(struct page *page)
 {
+       unsigned long pfn = page_to_pfn(page);
+
        totalram_pages++;
-       num_physpages++;
+       if (pfn >= num_physpages)
+               num_physpages = pfn + 1;
 
 #ifdef CONFIG_HIGHMEM
        if (PageHighMem(page))
@@ -422,6 +425,7 @@ int online_pages(unsigned long pfn, unsigned long nr_pages)
        zone->present_pages += onlined_pages;
        zone->zone_pgdat->node_present_pages += onlined_pages;
 
+       zone_pcp_update(zone);
        setup_per_zone_wmarks();
        calculate_zone_inactive_ratio(zone);
        if (onlined_pages) {
@@ -831,7 +835,6 @@ repeat:
        zone->present_pages -= offlined_pages;
        zone->zone_pgdat->node_present_pages -= offlined_pages;
        totalram_pages -= offlined_pages;
-       num_physpages -= offlined_pages;
 
        setup_per_zone_wmarks();
        calculate_zone_inactive_ratio(zone);