310-MIPS-Fix-memory-reservation-in-bootmem_init-for-cert.patch 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. From: Tobias Wolf <[email protected]>
  2. Subject: [v2] MIPS: Fix memory reservation in bootmem_init for certain non-usermem setups
  3. Commit 67a3ba25aa95 ("MIPS: Fix incorrect mem=X@Y handling") introduced a new
  4. issue for rt288x where "PHYS_OFFSET" is 0x0 but the calculated "ramstart" is
  5. not. As the prerequisite of custom memory map has been removed, this results
  6. in the full memory range of 0x0 - 0x8000000 to be marked as reserved for this
  7. platform.
  8. v2: Correctly compare that usermem is not null.
  9. This patch adds the originally intended prerequisite again.
  10. Signed-off-by: Tobias Wolf <[email protected]>
  11. ---
  12. --- a/arch/mips/kernel/setup.c
  13. +++ b/arch/mips/kernel/setup.c
  14. @@ -249,6 +249,8 @@ static unsigned long __init init_initrd(
  15. * Initialize the bootmem allocator. It also setup initrd related data
  16. * if needed.
  17. */
  18. +static int usermem __initdata;
  19. +
  20. #if defined(CONFIG_SGI_IP27) || (defined(CONFIG_CPU_LOONGSON64) && defined(CONFIG_NUMA))
  21. static void __init bootmem_init(void)
  22. @@ -288,7 +290,7 @@ static void __init bootmem_init(void)
  23. /*
  24. * Reserve any memory between the start of RAM and PHYS_OFFSET
  25. */
  26. - if (ramstart > PHYS_OFFSET)
  27. + if (usermem && ramstart > PHYS_OFFSET)
  28. memblock_reserve(PHYS_OFFSET, ramstart - PHYS_OFFSET);
  29. if (PFN_UP(ramstart) > ARCH_PFN_OFFSET) {
  30. @@ -336,8 +338,6 @@ static void __init bootmem_init(void)
  31. #endif /* CONFIG_SGI_IP27 */
  32. -static int usermem __initdata;
  33. -
  34. static int __init early_parse_mem(char *p)
  35. {
  36. phys_addr_t start, size;