On Fri, 16 Aug 2024 12:06:25 +0800 Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> wrote: > The gigantic page size may larger than memory block size, so memory > offline always fails in this case after commit b2c9e2fbba32 ("mm: make > alloc_contig_range work at pageblock granularity"), > > offline_pages > start_isolate_page_range > start_isolate_page_range(isolate_before=true) > isolate [isolate_start, isolate_start + pageblock_nr_pages) > start_isolate_page_range(isolate_before=false) > isolate [isolate_end - pageblock_nr_pages, isolate_end) pageblock > __alloc_contig_migrate_range > isolate_migratepages_range > isolate_migratepages_block > isolate_or_dissolve_huge_page > if (hstate_is_gigantic(h)) > return -ENOMEM; > > In fact, we don't need to migrate page in page range isolation, for > memory offline path, there is do_migrate_range() to move the pages. > For contig allocation, there is another __alloc_contig_migrate_range() > after isolation to migrate the pages. So fix issue by skipping the > __alloc_contig_migrate_range() in isolate_single_pageblock(). > > Fixes: b2c9e2fbba32 ("mm: make alloc_contig_range work at pageblock granularity") Should we backport this into -stable kernels?