On 3/21/23 01:24, Kirill A. Shutemov wrote: > Normal page init path frees pages during the boot in MAX_ORDER chunks, > but deferred page init path does it in pageblock blocks. > > Change deferred page init path to work in MAX_ORDER blocks. > > For cases when MAX_ORDER is larger than pageblock, set migrate type to > MIGRATE_MOVABLE for all pageblocks covered by the page. Looks like the problems with migratetype were why commit e780149bcd4b ("mm: fix set pageblock migratetype in deferred struct page init") switched it from MAX_ORDER to pageblock_order. This should work better. > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx> But I think you'll have to rebase on mm-unstable that moved some of the code to mm_init.c