diff options
author | Thomas Bogendoerfer <tbogendoerfer@suse.de> | 2019-09-24 17:20:51 +0200 |
---|---|---|
committer | Paul Burton <paul.burton@mips.com> | 2019-10-02 14:11:30 -0700 |
commit | bd848d1b9235d027e65fcc87de26cc1b02b41cc8 (patch) | |
tree | 035176c008e48d3b95a5dd25c4c0e84b7c1abea0 /arch | |
parent | 66b416ee41ed7a8216e5234a96288dbb8124e4b6 (diff) | |
download | lwn-bd848d1b9235d027e65fcc87de26cc1b02b41cc8.tar.gz lwn-bd848d1b9235d027e65fcc87de26cc1b02b41cc8.zip |
MIPS: init: Prevent adding memory before PHYS_OFFSET
On some SGI machines (IP28 and IP30) a small region of memory is mirrored
to pyhsical address 0 for exception vectors while rest of the memory
is reachable at a higher physical address. ARC PROM marks this
region as reserved, but with commit a94e4f24ec83 ("MIPS: init: Drop
boot_mem_map") this chunk is used, when searching for start of ram,
which breaks at least IP28 and IP30 machines. To fix this
add_region_memory() checks for start address < PHYS_OFFSET and ignores
these chunks.
Fixes: a94e4f24ec83 ("MIPS: init: Drop boot_mem_map")
Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/kernel/setup.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index f5c6b4c6de24..5eec13b8d222 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c @@ -108,6 +108,9 @@ void __init add_memory_region(phys_addr_t start, phys_addr_t size, long type) return; } + if (start < PHYS_OFFSET) + return; + memblock_add(start, size); /* Reserve any memory except the ordinary RAM ranges. */ switch (type) { |