linux/arch/arm/mm
Lennert Buytenhek 60296c71f6 [ARM] prevent crashing when too much RAM installed
This patch will truncate and/or ignore memory banks if their kernel
direct mappings would (partially) overlap with the vmalloc area or
the mappings between the vmalloc area and the address space top, to
prevent crashing during early boot if there happens to be more RAM
installed than we are expecting.

Since the start of the vmalloc area is not at a fixed address (but
the vmalloc end address is, via the per-platform VMALLOC_END define),
a default area of 128M is reserved for vmalloc mappings, which can
be shrunk or enlarged by passing an appropriate vmalloc= command line
option as it is done on x86.

On a board with a 3:1 user:kernel split, VMALLOC_END at 0xfe000000,
two 512M RAM banks and vmalloc=128M (the default), this patch gives:

	Truncating RAM at 20000000-3fffffff to -35ffffff (vmalloc region overlap).
	Memory: 512MB 352MB = 864MB total

On a board with a 3:1 user:kernel split, VMALLOC_END at 0xfe800000,
two 256M RAM banks and vmalloc=768M, this patch gives:

	Truncating RAM at 00000000-0fffffff to -0e7fffff (vmalloc region overlap).
	Ignoring RAM at 10000000-1fffffff (vmalloc region overlap).

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Tested-by: Riku Voipio <riku.voipio@iki.fi>
2008-08-09 15:38:15 +02:00
..
abort-ev4.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev4t.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev5t.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev5tj.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev6.S [ARM] CONFIG_CPU_MPCORE -> CONFIG_CPU_32v6K 2006-02-22 21:13:28 +00:00
abort-ev7.S [ARM] armv7: add support for ARMv7 cores. 2007-05-08 22:55:53 +01:00
abort-lv4t.S [ARM] nommu: abort handler fixup for !CPU_CP15_MMU cores. 2006-09-28 20:15:46 +01:00
abort-macro.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-nommu.S [ARM] nommu: abort handler fixup for !CPU_CP15_MMU cores. 2006-09-28 20:15:46 +01:00
alignment.c Use helpers to obtain task pid in printks (arch code) 2007-10-19 11:53:43 -07:00
cache-feroceon-l2.c [ARM] Move include/asm-arm/plat-orion to arch/arm/plat-orion/include/plat 2008-08-09 13:44:58 +02:00
cache-l2x0.c [ARM] 4568/1: fix l2x0 cache invalidate handling of unaligned addresses 2007-09-17 14:56:39 +01:00
cache-v3.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
cache-v4.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
cache-v4wb.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cache-v4wt.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
cache-v6.S [ARM] 3356/1: Workaround for the ARM1136 I-cache invalidation problem 2006-03-10 22:26:47 +00:00
cache-v7.S [ARM] armv7: add support for ARMv7 cores. 2007-05-08 22:55:53 +01:00
cache-xsc3l2.c [ARM] pxa: add support for L2 outer cache on XScale3 (attempt 2) 2008-07-28 23:13:09 +01:00
consistent.c ARM: support generic per-device coherent dma mem 2008-07-18 21:14:01 +02:00
context.c Merge branches 'armv7', 'at91', 'misc' and 'omap' into devel 2007-05-09 10:41:28 +01:00
copypage-feroceon.S [ARM] Feroceon: Feroceon-specific WA-cache compatible {copy,clear}_user_page() 2008-04-28 16:06:51 -04:00
copypage-v3.S [ARM] Remove LOADREGS macro 2006-06-25 11:23:45 +01:00
copypage-v4mc.c [ARM] 4078/1: Fix ARM copypage cache coherency problems 2006-12-30 17:05:08 +00:00
copypage-v4wb.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
copypage-v4wt.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
copypage-v6.c [ARM] 4078/1: Fix ARM copypage cache coherency problems 2006-12-30 17:05:08 +00:00
copypage-xsc3.S [ARM] 3377/2: add support for intel xsc3 core 2006-03-28 21:00:40 +01:00
copypage-xscale.c [ARM] 4078/1: Fix ARM copypage cache coherency problems 2006-12-30 17:05:08 +00:00
discontig.c mm: move bootmem descriptors definition to a single place 2008-07-24 10:47:14 -07:00
extable.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fault-armv.c [ARM] Fix shared mmap when more than two maps of the same file exist 2008-07-27 10:35:54 +01:00
fault.c ARM kprobes: prevent some functions involved with kprobes from being probed 2008-01-26 15:25:17 +00:00
fault.h [ARM] do_bad_area() always takes current and current->active_mm 2006-09-27 16:13:48 +01:00
flush.c [ARM] 5092/1: Fix the I-cache invalidation on ARMv6 and later CPUs 2008-07-03 16:39:57 +01:00
init.c [ARM] initrd: claim initrd memory exclusively 2008-07-30 21:24:56 +01:00
iomap.c iomap: fix 64 bits resources on 32 bits 2008-04-29 08:06:02 -07:00
ioremap.c [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
Kconfig [ARM] pxa: add support for L2 outer cache on XScale3 (attempt 2) 2008-07-28 23:13:09 +01:00
Makefile Merge branch 'pxa' into devel 2008-07-13 12:05:49 +01:00
mm.h [ARM] mm 6: allow mem_types table to specify extended pte attributes 2007-04-21 20:36:02 +01:00
mmap.c [ARM] 4839/1: fixes kernel Oops in /dev/mem device driver for memory map with PHYS_OFF 2008-02-29 22:47:20 +00:00
mmu.c [ARM] prevent crashing when too much RAM installed 2008-08-09 15:38:15 +02:00
nommu.c Introduce flags for reserve_bootmem() 2008-02-07 08:42:25 -08:00
pgd.c [ARM] Fix freeing of page tables for ARM in free_pgd_slow 2008-03-01 20:23:57 +00:00
proc-arm6_7.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm7tdmi.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm9tdmi.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm720.S [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
proc-arm740.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm920.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm922.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm925.S [ARM] 5034/1: fix arm{925,926,940,946} dma_flush_range() in WT mode 2008-05-17 22:55:14 +01:00
proc-arm926.S [ARM] 5034/1: fix arm{925,926,940,946} dma_flush_range() in WT mode 2008-05-17 22:55:14 +01:00
proc-arm940.S [ARM] 5034/1: fix arm{925,926,940,946} dma_flush_range() in WT mode 2008-05-17 22:55:14 +01:00
proc-arm946.S [ARM] 5034/1: fix arm{925,926,940,946} dma_flush_range() in WT mode 2008-05-17 22:55:14 +01:00
proc-arm1020.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm1020e.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm1022.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-arm1026.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-feroceon.S [ARM] Feroceon: don't disable BPU on boot 2008-07-07 18:38:24 -04:00
proc-macros.S [ARM] armv7: add support for ARMv7 cores. 2007-05-08 22:55:53 +01:00
proc-sa110.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
proc-sa1100.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
proc-syms.c [ARM] 4502/1: nommu: Do not export the copy/clear user page functions 2007-07-20 21:29:51 +01:00
proc-v6.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-v7.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
proc-xsc3.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
proc-xscale.S [ARM] fix 48d7927bdf 2008-04-24 10:06:45 +01:00
tlb-v3.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4wb.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4wbi.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v6.S [ARM] 4129/1: Add barriers after the TLB operations 2007-02-08 14:49:27 +00:00
tlb-v7.S [ARM] 4394/1: ARMv7: Add the TLB range operations 2007-05-30 14:32:07 +01:00