0003-MIPS-Fix-memory-reservation-in-bootmem_init-for-cert.patch 1.4 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. @@ -369,6 +369,8 @@ static unsigned long __init bootmap_byte
  15. return ALIGN(bytes, sizeof(long));
  16. }
  17. +static int usermem __initdata;
  18. +
  19. static void __init bootmem_init(void)
  20. {
  21. unsigned long reserved_end;
  22. @@ -442,7 +444,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. add_memory_region(PHYS_OFFSET, ramstart - PHYS_OFFSET,
  29. BOOT_MEM_RESERVED);
  30. @@ -652,8 +654,6 @@ static void __init bootmem_init(void)
  31. * initialization hook for anything else was introduced.
  32. */
  33. -static int usermem __initdata;
  34. -
  35. static int __init early_parse_mem(char *p)
  36. {
  37. phys_addr_t start, size;