Re: [PATCH 1/2] mm: drop migrate type checks from has_unmovable_pages

From: Michal Hocko
Date: Thu Oct 19 2017 - 08:21:30 EST


On Thu 19-10-17 10:20:41, Michal Hocko wrote:
> On Thu 19-10-17 16:33:56, Joonsoo Kim wrote:
> > On Thu, Oct 19, 2017 at 09:15:03AM +0200, Michal Hocko wrote:
> > > On Thu 19-10-17 11:51:11, Joonsoo Kim wrote:
> [...]
> > > > Hello,
> > > >
> > > > This patch will break the CMA user. As you mentioned, CMA allocation
> > > > itself isn't migrateable. So, after a single page is allocated through
> > > > CMA allocation, has_unmovable_pages() will return true for this
> > > > pageblock. Then, futher CMA allocation request to this pageblock will
> > > > fail because it requires isolating the pageblock.
> > >
> > > Hmm, does this mean that the CMA allocation path depends on
> > > has_unmovable_pages to return false here even though the memory is not
> > > movable? This sounds really strange to me and kind of abuse of this
> >
> > Your understanding is correct. Perhaps, abuse or wrong function name.
> >
> > > function. Which path is that? Can we do the migrate type test theres?
> >
> > alloc_contig_range() -> start_isolate_page_range() ->
> > set_migratetype_isolate() -> has_unmovable_pages()
>
> I see. It seems that the CMA and memory hotplug have a very different
> view on what should happen during isolation.
>
> > We can add one argument, 'XXX' to set_migratetype_isolate() and change
> > it to check migrate type rather than has_unmovable_pages() if 'XXX' is
> > specified.
>
> Can we use the migratetype argument and do the special thing for
> MIGRATE_CMA? Like the following diff?

And with the full changelog.
---