On Tue 07-07-20 16:44:45, Joonsoo Kim wrote: [...] > @@ -1551,9 +1552,12 @@ struct page *alloc_migration_target(struct page *page, unsigned long private) > > gfp_mask |= htlb_alloc_mask(h); > return alloc_huge_page_nodemask(h, nid, mtc->nmask, > - gfp_mask, false); > + gfp_mask, mtc->skip_cma); > } > > + if (mtc->skip_cma) > + flags = memalloc_nocma_save(); > + As already mentioned in previous email this is a completely wrong usage of the scope API. The scope should be defined by the caller and this should be all transparent by the allocator layer. > if (PageTransHuge(page)) { > /* > * clear __GFP_RECALIM since GFP_TRANSHUGE is the gfp_mask > @@ -1572,6 +1576,9 @@ struct page *alloc_migration_target(struct page *page, unsigned long private) > if (new_page && PageTransHuge(new_page)) > prep_transhuge_page(new_page); > > + if (mtc->skip_cma) > + memalloc_nocma_restore(flags); > + > return new_page; > } > > -- > 2.7.4 -- Michal Hocko SUSE Labs