From: Milton Miller Date: Mon, 20 Oct 2008 15:37:04 +0000 (+0000) Subject: powerpc: Always trim numa memory to lmb_end_of_DRAM() X-Git-Tag: upstream/snapshot3+hdmi~21854^2~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fe55249d17f7979cf9bbc58e38e9ceaf1918b415;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git 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 Signed-off-by: Benjamin Herrenschmidt --- diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index 195bfcd..eb505ad 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, /* * We use lmb_end_of_DRAM() in here instead of memory_limit because * we've already adjusted it for the limit and it takes care of - * having memory holes below the limit. + * having memory holes below the limit. Also, in the case of + * iommu_is_off, memory_limit is not set but is implicitly enforced. */ - if (! memory_limit) - return size; - if (start + size <= lmb_end_of_DRAM()) return size;