summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm/40x_mmu.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-12-08 13:52:00 +0100
committerIngo Molnar <mingo@elte.hu>2008-12-08 13:52:00 +0100
commit4d117c5c6b00254e51c61ff5b506ccaba21a5a03 (patch)
treeecb9d3ee4bfd9610c459c1eb0c0357c2905f3ae4 /arch/powerpc/mm/40x_mmu.c
parent6c415b9234a8c71f290e5d4fddc467f103f32719 (diff)
parent43714539eab42b2fa3653ea7bd667b36c2291b11 (diff)
downloadop-kernel-dev-4d117c5c6b00254e51c61ff5b506ccaba21a5a03.zip
op-kernel-dev-4d117c5c6b00254e51c61ff5b506ccaba21a5a03.tar.gz
Merge branch 'sched/urgent' into sched/core
Diffstat (limited to 'arch/powerpc/mm/40x_mmu.c')
-rw-r--r--arch/powerpc/mm/40x_mmu.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/powerpc/mm/40x_mmu.c b/arch/powerpc/mm/40x_mmu.c
index cecbbc7..29954dc 100644
--- a/arch/powerpc/mm/40x_mmu.c
+++ b/arch/powerpc/mm/40x_mmu.c
@@ -93,7 +93,7 @@ void __init MMU_init_hw(void)
unsigned long __init mmu_mapin_ram(void)
{
- unsigned long v, s;
+ unsigned long v, s, mapped;
phys_addr_t p;
v = KERNELBASE;
@@ -130,5 +130,17 @@ unsigned long __init mmu_mapin_ram(void)
s -= LARGE_PAGE_SIZE_4M;
}
- return total_lowmem - s;
+ mapped = total_lowmem - s;
+
+ /* If the size of RAM is not an exact power of two, we may not
+ * have covered RAM in its entirety with 16 and 4 MiB
+ * pages. Consequently, restrict the top end of RAM currently
+ * allocable so that calls to the LMB to allocate PTEs for "tail"
+ * coverage with normal-sized pages (or other reasons) do not
+ * attempt to allocate outside the allowed range.
+ */
+
+ __initial_memory_limit_addr = memstart_addr + mapped;
+
+ return mapped;
}
OpenPOWER on IntegriCloud