| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- From: Tobias Wolf <[email protected]>
- 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 <[email protected]>
- ---
- --- a/arch/mips/kernel/setup.c
- +++ b/arch/mips/kernel/setup.c
- @@ -249,6 +249,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_LOONGSON64) && defined(CONFIG_NUMA))
-
- static void __init bootmem_init(void)
- @@ -288,7 +290,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) {
- @@ -336,8 +338,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;
|