[PATCH] m68k: Increase initial mapping to 16MB if possible

Andreas Schwab
2014-04-24T10:24:52Z

If the size of the first memory chunk is at least 16MB increase the
initial mapping to 16MB instead of 4MB. This makes it possible to map
more memory in the first node without running out of space for the page
tables.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
---
arch/m68k/kernel/head.S | 9 ++++++++-
arch/m68k/mm/motorola.c | 2 +-
2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/arch/m68k/kernel/head.S b/arch/m68k/kernel/head.S
index ac85f16..23091ea 100644
--- a/arch/m68k/kernel/head.S
+++ b/arch/m68k/kernel/head.S
@@ -941,7 +941,14 @@ L(nocon):
* First map the first 4 MB of kernel code & data
*/

- mmu_map #PAGE_OFFSET,%pc@(L(phys_kernel_start)),#4*1024*1024,\
+ get_bi_record BI_MEMCHUNK
+ movel %a0@(4),%d0
+ movel #16*1024*1024,%d1
+ cmpl %d0,%d1
+ jls 1f
+ lsrl #2,%d1
+1:
+ mmu_map #PAGE_OFFSET,%pc@(L(phys_kernel_start)),%d1,\
%pc@(m68k_supervisor_cachemode)

putc 'C'
diff --git a/arch/m68k/mm/motorola.c b/arch/m68k/mm/motorola.c
index 251c543..0e4c3a9 100644
--- a/arch/m68k/mm/motorola.c
+++ b/arch/m68k/mm/motorola.c
@@ -45,7 +45,7 @@ EXPORT_SYMBOL(mm_cachebits);
#endif

/* size of memory already mapped in head.S */
-#define INIT_MAPPED_SIZE (4UL<<20)
+#define INIT_MAPPED_SIZE (m68k_memory[0].size >= 16UL<<20 ? 16UL<<20 : 4UL<<20)

extern unsigned long availmem;

--
1.9.2

--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."