diff options
author | Milton Miller <miltonm@bga.com> | 2008-10-20 11:37:04 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-10-21 00:19:12 -0400 |
commit | fe55249d17f7979cf9bbc58e38e9ceaf1918b415 (patch) | |
tree | f02da5bb8437bcba4e38a760eef2b77f9a52d0a5 /arch/powerpc/mm | |
parent | 6a75a6b8e85e92cc774d42a4e113c76c30b5a539 (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/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/numa.c | 6 |
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 | ||