| From: Tobias Wolf <dev-NTEO@vplace.de> |
| Subject: [v2] MIPS: Fix memory reservation in bootmem_init for certain non-usermem setups |
| |
| Commit 67a3ba25aa95 ("MIPS: Fix incorrect mem=X@Y handling") introduced a new |
| issue for rt288x where "PHYS_OFFSET" is 0x0 but the calculated "ramstart" is |
| not. As the prerequisite of custom memory map has been removed, this results |
| in the full memory range of 0x0 - 0x8000000 to be marked as reserved for this |
| platform. |
| |
| v2: Correctly compare that usermem is not null. |
| |
| This patch adds the originally intended prerequisite again. |
| |
| Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de> |
| --- |
| |
| --- a/arch/mips/kernel/setup.c |
| +++ b/arch/mips/kernel/setup.c |
| @@ -287,6 +287,8 @@ static unsigned long __init init_initrd( |
| * Initialize the bootmem allocator. It also setup initrd related data |
| * if needed. |
| */ |
| +static int usermem __initdata; |
| + |
| #if defined(CONFIG_SGI_IP27) || (defined(CONFIG_CPU_LOONGSON3) && defined(CONFIG_NUMA)) |
| |
| static void __init bootmem_init(void) |
| @@ -325,7 +327,7 @@ static void __init bootmem_init(void) |
| /* |
| * Reserve any memory between the start of RAM and PHYS_OFFSET |
| */ |
| - if (ramstart > PHYS_OFFSET) |
| + if (usermem && ramstart > PHYS_OFFSET) |
| memblock_reserve(PHYS_OFFSET, ramstart - PHYS_OFFSET); |
| |
| if (PFN_UP(ramstart) > ARCH_PFN_OFFSET) { |
| @@ -386,8 +388,6 @@ static void __init bootmem_init(void) |
| |
| #endif /* CONFIG_SGI_IP27 */ |
| |
| -static int usermem __initdata; |
| - |
| static int __init early_parse_mem(char *p) |
| { |
| phys_addr_t start, size; |