absent_pages_in_range() made the assumption that users of the arch-independent
zone-sizing API would not care about holes beyound the end of physical memory.
This was not the case and was "fixed" in a patch called "Account for holes
that are outside the range of physical memory". However, when given a range
that started before a hole in "real" memory and ended beyond the end of memory,
it would get the result wrong. The bug is in mainline but a patch is below.
It has been tested successfully on a number of machines and
architectures. Additional credit to Keith Mannthey for discovering the problem,
helping identify the correct fix and confirming it Worked For Him.
Signed-off-by: Mel Gorman <[email protected]>
---
diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.19-rc2-mm2-clean/mm/page_alloc.c linux-2.6.19-rc2-mm2-fix_hole_pages/mm/page_alloc.c
--- linux-2.6.19-rc2-mm2-clean/mm/page_alloc.c 2006-10-23 09:53:24.000000000 +0100
+++ linux-2.6.19-rc2-mm2-fix_hole_pages/mm/page_alloc.c 2006-10-26 10:33:30.000000000 +0100
@@ -2511,7 +2511,7 @@ unsigned long __init __absent_pages_in_r
/* Account for ranges past physical memory on this node */
if (range_end_pfn > prev_end_pfn)
- hole_pages = range_end_pfn -
+ hole_pages += range_end_pfn -
max(range_start_pfn, prev_end_pfn);
return hole_pages;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]