revert "mm: fix-up zone present pages"
Revert commit 7f1290f2f2
("mm: fix-up zone present pages")
That patch tried to fix a issue when calculating zone->present_pages,
but it caused a regression on 32bit systems with HIGHMEM. With that
change, reset_zone_present_pages() resets all zone->present_pages to
zero, and fixup_zone_present_pages() is called to recalculate
zone->present_pages when the boot allocator frees core memory pages into
buddy allocator. Because highmem pages are not freed by bootmem
allocator, all highmem zones' present_pages becomes zero.
Various options for improving the situation are being discussed but for
now, let's return to the 3.6 code.
Cc: Jianguo Wu <wujianguo@huawei.com>
Cc: Jiang Liu <jiang.liu@huawei.com>
Cc: Petr Tesarik <ptesarik@suse.cz>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Minchan Kim <minchan.kim@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: David Rientjes <rientjes@google.com>
Tested-by: Chris Clayton <chris2553@googlemail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
0f3c42f522
commit
5576646f3c
@@ -116,8 +116,6 @@ static unsigned long __init __free_memory_core(phys_addr_t start,
|
||||
return 0;
|
||||
|
||||
__free_pages_memory(start_pfn, end_pfn);
|
||||
fixup_zone_present_pages(pfn_to_nid(start >> PAGE_SHIFT),
|
||||
start_pfn, end_pfn);
|
||||
|
||||
return end_pfn - start_pfn;
|
||||
}
|
||||
@@ -128,7 +126,6 @@ unsigned long __init free_low_memory_core_early(int nodeid)
|
||||
phys_addr_t start, end, size;
|
||||
u64 i;
|
||||
|
||||
reset_zone_present_pages();
|
||||
for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
|
||||
count += __free_memory_core(start, end);
|
||||
|
||||
|
Reference in New Issue
Block a user