[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1219252134.13885.25.camel@localhost.localdomain>
Date: Wed, 20 Aug 2008 12:08:54 -0500
From: Adam Litke <agl@...ibm.com>
To: linux-mm <linux-mm@...ck.org>
Cc: linux-kernel <linux-kernel@...r.kernel.org>,
Andrew Morton <akpm@...ux-foundation.org>,
nacc <nacc@...ux.vnet.ibm.com>, mel@....ul.ie,
apw <apw@...dowen.org>, agl <agl@...ux.vnet.ibm.com>
Subject: [BUG] Make setup_zone_migrate_reserve() aware of overlapping nodes
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@...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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists