|
@@ -339,8 +339,11 @@ EXPORT_SYMBOL_GPL(__remove_pages);
|
|
|
|
|
|
void online_page(struct page *page)
|
|
void online_page(struct page *page)
|
|
{
|
|
{
|
|
|
|
+ unsigned long pfn = page_to_pfn(page);
|
|
|
|
+
|
|
totalram_pages++;
|
|
totalram_pages++;
|
|
- num_physpages++;
|
|
|
|
|
|
+ if (pfn >= num_physpages)
|
|
|
|
+ num_physpages = pfn + 1;
|
|
|
|
|
|
#ifdef CONFIG_HIGHMEM
|
|
#ifdef CONFIG_HIGHMEM
|
|
if (PageHighMem(page))
|
|
if (PageHighMem(page))
|
|
@@ -832,7 +835,6 @@ repeat:
|
|
zone->present_pages -= offlined_pages;
|
|
zone->present_pages -= offlined_pages;
|
|
zone->zone_pgdat->node_present_pages -= offlined_pages;
|
|
zone->zone_pgdat->node_present_pages -= offlined_pages;
|
|
totalram_pages -= offlined_pages;
|
|
totalram_pages -= offlined_pages;
|
|
- num_physpages -= offlined_pages;
|
|
|
|
|
|
|
|
setup_per_zone_wmarks();
|
|
setup_per_zone_wmarks();
|
|
calculate_zone_inactive_ratio(zone);
|
|
calculate_zone_inactive_ratio(zone);
|