On 19 Aug 2024, at 23:26, Kefeng Wang 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; > > [ 15.815756] memory offlining [mem 0x3c0000000-0x3c7ffffff] failed due to failure to isolate range > > Gigantic PageHuge is bigger than a pageblock, but since it is freed as > order-0 pages, its pageblocks after being freed will get to the right > free list. There is no need to have special handling code for them in > start_isolate_page_range(). For both alloc_contig_range() and memory > offline cases, the migration code after start_isolate_page_range() will > be able to migrate gigantic PageHuge when possible. > > Let's clean up start_isolate_page_range() and fix the aforementioned > memory offline failure issue all together. > > Fixes: b2c9e2fbba32 ("mm: make alloc_contig_range work at pageblock granularity") > Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> > --- > v2: > - update changelog, thanks Zi, David > > mm/page_isolation.c | 28 +++------------------------- > 1 file changed, 3 insertions(+), 25 deletions(-) > LGTM. Thanks. Acked-by: Zi Yan <ziy@xxxxxxxxxx> -- Best Regards, Yan, Zi
Attachment:
signature.asc
Description: OpenPGP digital signature