From 813d6c91217e1c8fc6ddcd3e71f71b05ea72bfad 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: 190151165i Fixes: 417ac617ea5e ("ANDROID: mm/memory_hotplug: implement {add/remove}_memory_subsection") Change-Id: I20314fe136d6e5b56a9275be7e2d130d18bd79a5 Signed-off-by: Patrick Daly --- mm/memory_hotplug.c | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index ae487015d1c5..f1b193096ffa 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1834,22 +1834,6 @@ int remove_memory(int nid, 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(int nid, u64 start, u64 size) { if (size == memory_block_size_bytes()) @@ -1863,15 +1847,6 @@ int remove_memory_subsection(int nid, 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: [%llx, %llx) sections are not offlined\n", - __func__, start, start + size); - mem_hotplug_done(); - return -EBUSY; - } - arch_remove_memory(nid, start, size, NULL); if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK))