Commit 0c6cb974 authored by Mel Gorman's avatar Mel Gorman Committed by Linus Torvalds

[PATCH] Calculation fix for memory holes beyong the end of physical memory

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: default avatarMel Gorman <mel@csn.ul.ie>
Cc: keith mannthey <kmannth@us.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 057647fc
...@@ -2261,7 +2261,7 @@ unsigned long __init __absent_pages_in_range(int nid, ...@@ -2261,7 +2261,7 @@ unsigned long __init __absent_pages_in_range(int nid,
/* Account for ranges past physical memory on this node */ /* Account for ranges past physical memory on this node */
if (range_end_pfn > prev_end_pfn) if (range_end_pfn > prev_end_pfn)
hole_pages = range_end_pfn - hole_pages += range_end_pfn -
max(range_start_pfn, prev_end_pfn); max(range_start_pfn, prev_end_pfn);
return hole_pages; return hole_pages;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment