All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: fix nodes_cover_memory
@ 2009-05-06 16:53 Yinghai Lu
  2009-05-07 13:47 ` Mel Gorman
  0 siblings, 1 reply; 10+ messages in thread
From: Yinghai Lu @ 2009-05-06 16:53 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Andrew Morton
  Cc: mel, linux-kernel@vger.kernel.org


found one system that missed one entry for one node in SRAT, and that SRAT is not
rejected by nodes_cover_memory()

it turns out that we can not use absent_page_in_range to calaulate
e820ram, bacause that will use early_node_map and that is AND result of
e820 and SRAT.

revert back to use e820_hole_size instead.

also change that difference checking to 1M instead of 4G,
because e820ram, and pxmram are in pages.

[ Impact: reject wrong SRAT tables ]

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Mel Gorman <mel@csn.ul.ie>

---
 arch/x86/mm/srat_64.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: linux-2.6/arch/x86/mm/srat_64.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/srat_64.c
+++ linux-2.6/arch/x86/mm/srat_64.c
@@ -345,9 +345,9 @@ static int __init nodes_cover_memory(con
 			pxmram = 0;
 	}
 
-	e820ram = max_pfn - absent_pages_in_range(0, max_pfn);
+	e820ram = max_pfn - (e820_hole_size(0, max_pfn<<PAGE_SHIFT)>>PAGE_SHIFT);
 	/* We seem to lose 3 pages somewhere. Allow a bit of slack. */
-	if ((long)(e820ram - pxmram) >= 1*1024*1024) {
+	if ((long)(e820ram - pxmram) >= (1<<(20 - PAGE_SHIFT))) {
 		printk(KERN_ERR
 	"SRAT: PXMs only cover %luMB of your %luMB e820 RAM. Not used.\n",
 			(pxmram << PAGE_SHIFT) >> 20,

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2009-05-11 15:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-06 16:53 [PATCH] x86: fix nodes_cover_memory Yinghai Lu
2009-05-07 13:47 ` Mel Gorman
2009-05-07 14:21   ` Ingo Molnar
2009-05-07 14:47     ` Mel Gorman
2009-05-08  7:36     ` [PATCH 1/2] x86: Sanity check the e820 against the SRAT table using e820 map only Yinghai Lu
2009-05-08  7:37       ` [PATCH 2/2] x86: Allow 1MB of slack between the e820 map and SRAT, not 4GB Yinghai Lu
2009-05-11  9:54         ` [tip:x86/mm] " tip-bot for Yinghai Lu
2009-05-11  9:36       ` [PATCH 1/2] x86: Sanity check the e820 against the SRAT table using e820 map only Ingo Molnar
2009-05-11 15:51         ` Yinghai Lu
2009-05-11  9:54       ` [tip:x86/mm] " tip-bot for Yinghai Lu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.