From 5c9cf613be14804250ff56fe5651760b3acf2c91 Mon Sep 17 00:00:00 2001 From: Patrick Daly Date: Fri, 4 Jun 2021 16:44:39 -0700 Subject: [PATCH] ANDROID: mm/memory_hotplug: Relax remove_memory_subsection error checking A memory section may contain a mix of memory present at bootup, and memory added dynamically via add_memory_subsection(). Fix remove_memory_subsection to not return an error for this situation. Bug: 190151165 Fixes: 417ac617ea5e ("ANDROID: mm/memory_hotplug: implement {add/remove}_memory_subsection") Change-Id: I20314fe136d6e5b56a9275be7e2d130d18bd79a5 Signed-off-by: Patrick Daly Signed-off-by: Sudarshan Rajagopalan --- mm/memory_hotplug.c | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index bf5883671e51..7d9320e3f4ae 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -2293,22 +2293,6 @@ int remove_memory(u64 start, u64 size) } EXPORT_SYMBOL_GPL(remove_memory); -static bool __check_sections_offline(unsigned long start_pfn, - unsigned long nr_pages) -{ - const unsigned long end_pfn = start_pfn + nr_pages; - unsigned long pfn, sec_nr; - - for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) { - sec_nr = pfn_to_section_nr(pfn); - - if (!valid_section_nr(sec_nr) || online_section_nr(sec_nr)) - return false; - } - - return true; -} - int remove_memory_subsection(u64 start, u64 size) { if (size == memory_block_size_bytes()) @@ -2322,15 +2306,6 @@ int remove_memory_subsection(u64 start, u64 size) } mem_hotplug_begin(); - - /* we cannot remove subsections that are invalid or online */ - if(!__check_sections_offline(PHYS_PFN(start), size >> PAGE_SHIFT)) { - pr_err("%s: [%lx, %lx) sections are not offlined\n", - __func__, start, start + size); - mem_hotplug_done(); - return -EBUSY; - } - arch_remove_memory(start, size, NULL); if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK))