[PATCH v2 00/10] mm/memory_hotplug: online_pages()/offline_pages() cleanups

From: David Hildenbrand
Date: Wed Aug 19 2020 - 14:00:51 EST


These are a bunch of cleanups for online_pages()/offline_pages() and
related code, mostly getting rid of memory hole handling that is no longer
necessary. There is only a single walk_system_ram_range() call left in
offline_pages(), to make sure we don't have any memory holes. I had some
of these patches lying around for a longer time but didn't have time to
polish them.

In addition, the last patch marks all pageblocks of memory to get onlined
MIGRATE_ISOLATE, so pages that have just been exposed to the buddy cannot
get allocated before onlining is complete. Once heavy lifting is done,
the pageblocks are set to MIGRATE_MOVABLE, such that allocations are
possible.

I played with DIMMs and virtio-mem on x86-64 and didn't spot any surprises.
I verified that the numer of isolated pageblocks is correctly handled when
onlining/offlining.

v1 -> v2:
- "mm/memory_hotplug: enforce section granularity when onlining/offlining"
-- Extended the patch description regarding alignment requirements
-- Fixed a typo
- Squashed "mm/memory_hotplug: simplify offlining of pages in
offline_pages()" and "mm/memory_hotplug: simplify checking if all pages are
isolated in offline_pages()", resulting in "mm/memory_hotplug: simplify page
offlining"
- Added ACKs

David Hildenbrand (10):
mm/memory_hotplug: inline __offline_pages() into offline_pages()
mm/memory_hotplug: enforce section granularity when onlining/offlining
mm/memory_hotplug: simplify page offlining
mm/page_alloc: simplify __offline_isolated_pages()
mm/memory_hotplug: drop nr_isolate_pageblock in offline_pages()
mm/page_isolation: simplify return value of start_isolate_page_range()
mm/memory_hotplug: simplify page onlining
mm/page_alloc: drop stale pageblock comment in memmap_init_zone*()
mm: pass migratetype into memmap_init_zone() and
move_pfn_range_to_zone()
mm/memory_hotplug: mark pageblocks MIGRATE_ISOLATE while onlining
memory

arch/ia64/mm/init.c | 4 +-
include/linux/memory_hotplug.h | 7 +-
include/linux/mm.h | 3 +-
mm/Kconfig | 2 +-
mm/memory_hotplug.c | 156 ++++++++++++++-------------------
mm/memremap.c | 3 +-
mm/page_alloc.c | 64 ++++----------
mm/page_isolation.c | 7 +-
8 files changed, 98 insertions(+), 148 deletions(-)

--
2.26.2