diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-08 13:52:00 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-08 13:52:00 +0100 |
commit | 4d117c5c6b00254e51c61ff5b506ccaba21a5a03 (patch) | |
tree | ecb9d3ee4bfd9610c459c1eb0c0357c2905f3ae4 /arch/powerpc/mm/40x_mmu.c | |
parent | 6c415b9234a8c71f290e5d4fddc467f103f32719 (diff) | |
parent | 43714539eab42b2fa3653ea7bd667b36c2291b11 (diff) | |
download | op-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.c | 16 |
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; } |