Messages in this thread Patch in this message | | | Subject | [BUG] Make setup_zone_migrate_reserve() aware of overlapping nodes | From | Adam Litke <> | Date | Wed, 20 Aug 2008 12:08:54 -0500 |
| |
I have gotten to the root cause of the hugetlb badness I reported back on August 15th. My system has the following memory topology (note the overlapping node):
Node 0 Memory: 0x8000000-0x44000000 Node 1 Memory: 0x0-0x8000000 0x44000000-0x80000000
setup_zone_migrate_reserve() scans the address range 0x0-0x8000000 looking for a pageblock to move onto the MIGRATE_RESERVE list. Finding no candidates, it happily continues the scan into 0x8000000-0x44000000. When a pageblock is found, the pages are moved to the MIGRATE_RESERVE list on the wrong zone. Oops.
(Andrew: once the proper fix is agreed upon, this should also be a candidate for -stable.)
setup_zone_migrate_reserve() should skip pageblocks in overlapping nodes.
Signed-off-by: Adam Litke <agl@us.ibm.com>
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index af982f7..f297a9b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2512,6 +2512,10 @@ static void setup_zone_migrate_reserve(struct zone *zone) pageblock_order; for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) { + /* Watch out for overlapping nodes */ + if (!early_pfn_in_nid(pfn, zone->node)) + continue; + if (!pfn_valid(pfn)) continue; page = pfn_to_page(pfn); -- Adam Litke - (agl at us.ibm.com) IBM Linux Technology Center
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |