aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/prom.c
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2011-09-16 11:39:58 -0400
committerKumar Gala <galak@kernel.crashing.org>2011-10-12 00:30:40 -0400
commitba14f6491768acad5cf50a3c7dc8927b7614d692 (patch)
treeb2a9d9fc14031f6ea6d844580557de4e6eed8a07 /arch/powerpc/kernel/prom.c
parent5c4a5b8de65d08a436d112307204542a4d559ee2 (diff)
powerpc: respect mem= setting for early memory limit setup
For those MMUs that have some form of bolt'd linear mapping (TLB) required its rare that one ever sets mem= smaller than the size of that mapping. However, on Book-E 64 parts the initial linear mapping is quite large (1G) so its quite reasonable that mem= is set smaller than that. We need to parse the command line for mem= limit and constrain the amount of memory we map initially by it if need be. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/prom.c')
-rw-r--r--arch/powerpc/kernel/prom.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 831a201e03d2..8ad825c063c4 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -737,12 +737,15 @@ void __init early_init_devtree(void *params)
737 737
738 of_scan_flat_dt(early_init_dt_scan_root, NULL); 738 of_scan_flat_dt(early_init_dt_scan_root, NULL);
739 of_scan_flat_dt(early_init_dt_scan_memory_ppc, NULL); 739 of_scan_flat_dt(early_init_dt_scan_memory_ppc, NULL);
740 setup_initial_memory_limit(memstart_addr, first_memblock_size);
741 740
742 /* Save command line for /proc/cmdline and then parse parameters */ 741 /* Save command line for /proc/cmdline and then parse parameters */
743 strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE); 742 strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
744 parse_early_param(); 743 parse_early_param();
745 744
745 /* make sure we've parsed cmdline for mem= before this */
746 if (memory_limit)
747 first_memblock_size = min(first_memblock_size, memory_limit);
748 setup_initial_memory_limit(memstart_addr, first_memblock_size);
746 /* Reserve MEMBLOCK regions used by kernel, initrd, dt, etc... */ 749 /* Reserve MEMBLOCK regions used by kernel, initrd, dt, etc... */
747 memblock_reserve(PHYSICAL_START, __pa(klimit) - PHYSICAL_START); 750 memblock_reserve(PHYSICAL_START, __pa(klimit) - PHYSICAL_START);
748 /* If relocatable, reserve first 32k for interrupt vectors etc. */ 751 /* If relocatable, reserve first 32k for interrupt vectors etc. */