aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMilton Miller <miltonm@bga.com>2008-10-20 11:37:04 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2008-10-21 00:19:12 -0400
commitfe55249d17f7979cf9bbc58e38e9ceaf1918b415 (patch)
treef02da5bb8437bcba4e38a760eef2b77f9a52d0a5 /arch
parent6a75a6b8e85e92cc774d42a4e113c76c30b5a539 (diff)
powerpc: Always trim numa memory to lmb_end_of_DRAM()
numa_enforce_memory_limit tried to be smart and only call lmb_end_of_DRAM when a memory limit was set via mem= on the command line. However, the early boot code will also limit memory added to the lmb system when iommu=off is specified. When this happens, the page allocator is given pages not in the linear mapping and this results in a fatal data reference to the unmapped page. Signed-off-by: Milton Miller <miltonm@bga.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/mm/numa.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 195bfcd08959..eb505ad34a85 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -528,12 +528,10 @@ static unsigned long __init numa_enforce_memory_limit(unsigned long start,
528 /* 528 /*
529 * We use lmb_end_of_DRAM() in here instead of memory_limit because 529 * We use lmb_end_of_DRAM() in here instead of memory_limit because
530 * we've already adjusted it for the limit and it takes care of 530 * we've already adjusted it for the limit and it takes care of
531 * having memory holes below the limit. 531 * having memory holes below the limit. Also, in the case of
532 * iommu_is_off, memory_limit is not set but is implicitly enforced.
532 */ 533 */
533 534
534 if (! memory_limit)
535 return size;
536
537 if (start + size <= lmb_end_of_DRAM()) 535 if (start + size <= lmb_end_of_DRAM())
538 return size; 536 return size;
539 537