On 26/04/28 04:18PM, Muchun Song wrote: > The series fixes several bugs in vmemmap optimization, mainly around > incorrect page accounting and memmap initialization in DAX and memory > hotplug paths. It also fixes pageblock migratetype initialization and > struct page initialization for ZONE_DEVICE compound pages. > > Patches 1-4 fix vmemmap accounting issues. Patch 1 fixes an accounting > underflow in the section activation failure path by moving vmemmap page > accounting into the lower-level allocation and freeing helpers. Patch 2 > fixes incorrect altmap passing in the memory hotplug error path. Patch 3 > passes pgmap through memory deactivation paths so the teardown side can > determine whether vmemmap optimization was in effect. Patch 4 uses that > information to account the optimized DAX vmemmap size correctly. > > Patches 5-6 fix initialization issues in mm/mm_init. One makes sure all > pageblocks in ZONE_DEVICE compound pages get their migratetype > initialized. The other fixes a case where DAX memory hotplug reuses an > unoptimized early-section memmap while compound_nr_pages() still assumes > vmemmap optimization, leaving tail struct pages uninitialized. > > Changes in v8: > - In patch 4, move VM_WARN_ON_ONCE(nr_pages > PAGES_PER_SECTION) to the > top of section_nr_vmemmap_pages(). > - In patch 4, add Acked-by from David Hildenbrand.
Thanks! Acked-by: Liam R. Howlett <[email protected]> > > Muchun Song (6): > mm/sparse-vmemmap: Fix vmemmap accounting underflow > mm/memory_hotplug: Fix incorrect altmap passing in error path > mm/sparse-vmemmap: Pass @pgmap argument to memory deactivation paths > mm/sparse-vmemmap: Fix DAX vmemmap accounting with optimization > mm/mm_init: Fix pageblock migratetype for ZONE_DEVICE compound pages > mm/mm_init: Fix uninitialized struct pages for ZONE_DEVICE > > arch/arm64/mm/mmu.c | 5 +-- > arch/loongarch/mm/init.c | 5 +-- > arch/powerpc/mm/mem.c | 5 +-- > arch/riscv/mm/init.c | 5 +-- > arch/s390/mm/init.c | 5 +-- > arch/x86/mm/init_64.c | 5 +-- > include/linux/memory_hotplug.h | 8 +++-- > mm/memory_hotplug.c | 13 ++++---- > mm/memremap.c | 4 +-- > mm/mm_init.c | 47 ++++++++++++++++----------- > mm/sparse-vmemmap.c | 58 ++++++++++++++++++++++++++-------- > 11 files changed, 105 insertions(+), 55 deletions(-) > > > base-commit: 39704f00f747aba3144289870b5fd8ac230a9aaf > -- > 2.20.1 > >
