diff options
author | Sasha Levin <alexander.levin@verizon.com> | 2017-12-08 00:29:39 -0500 |
---|---|---|
committer | Sasha Levin <alexander.levin@verizon.com> | 2017-12-08 18:00:59 -0500 |
commit | 59075c07a1bb36bd9fcf22ced6d5643fe0bd88e8 (patch) | |
tree | 5ba893f570110c5b20b1ef078ddffc91d7bd9b34 /arch | |
parent | c3f4bb14a264a96c2709b026dca37a4eb252a82a (diff) |
Revert "MIPS: init: Ensure bootmem does not corrupt reserved memory"
This reverts commit 78d36a51aff258a26c4c2c12c4d86de0fae64e3a.
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/kernel/setup.c | 74 |
1 files changed, 3 insertions, 71 deletions
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index 51e77841f9f6..2734f6a4857d 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c @@ -147,35 +147,6 @@ void __init detect_memory_region(phys_addr_t start, phys_addr_t sz_min, phys_add add_memory_region(start, size, BOOT_MEM_RAM); } -bool __init memory_region_available(phys_addr_t start, phys_addr_t size) -{ - int i; - bool in_ram = false, free = true; - - for (i = 0; i < boot_mem_map.nr_map; i++) { - phys_addr_t start_, end_; - - start_ = boot_mem_map.map[i].addr; - end_ = boot_mem_map.map[i].addr + boot_mem_map.map[i].size; - - switch (boot_mem_map.map[i].type) { - case BOOT_MEM_RAM: - if (start >= start_ && start + size <= end_) - in_ram = true; - break; - case BOOT_MEM_RESERVED: - if ((start >= start_ && start < end_) || - (start < start_ && start + size >= start_)) - free = false; - break; - default: - continue; - } - } - - return in_ram && free; -} - static void __init print_memory_map(void) { int i; @@ -324,19 +295,11 @@ static void __init bootmem_init(void) #else /* !CONFIG_SGI_IP27 */ -static unsigned long __init bootmap_bytes(unsigned long pages) -{ - unsigned long bytes = DIV_ROUND_UP(pages, 8); - - return ALIGN(bytes, sizeof(long)); -} - static void __init bootmem_init(void) { unsigned long reserved_end; unsigned long mapstart = ~0UL; unsigned long bootmap_size; - bool bootmap_valid = false; int i; /* @@ -412,42 +375,11 @@ static void __init bootmem_init(void) #endif /* - * check that mapstart doesn't overlap with any of - * memory regions that have been reserved through eg. DTB - */ - bootmap_size = bootmap_bytes(max_low_pfn - min_low_pfn); - - bootmap_valid = memory_region_available(PFN_PHYS(mapstart), - bootmap_size); - for (i = 0; i < boot_mem_map.nr_map && !bootmap_valid; i++) { - unsigned long mapstart_addr; - - switch (boot_mem_map.map[i].type) { - case BOOT_MEM_RESERVED: - mapstart_addr = PFN_ALIGN(boot_mem_map.map[i].addr + - boot_mem_map.map[i].size); - if (PHYS_PFN(mapstart_addr) < mapstart) - break; - - bootmap_valid = memory_region_available(mapstart_addr, - bootmap_size); - if (bootmap_valid) - mapstart = PHYS_PFN(mapstart_addr); - break; - default: - break; - } - } - - if (!bootmap_valid) - panic("No memory area to place a bootmap bitmap"); - - /* * Initialize the boot-time allocator with low memory only. */ - if (bootmap_size != init_bootmem_node(NODE_DATA(0), mapstart, - min_low_pfn, max_low_pfn)) - panic("Unexpected memory size required for bootmap"); + bootmap_size = init_bootmem_node(NODE_DATA(0), mapstart, + min_low_pfn, max_low_pfn); + for (i = 0; i < boot_mem_map.nr_map; i++) { unsigned long start, end; |