Hi, On Mon, Jan 29, 2024 at 02:31:23PM +0530, Anshuman Khandual wrote: > > > On 1/25/24 22:12, Alexandru Elisei wrote: > > The patch f945116e4e19 ("mm: page_alloc: remove stale CMA guard code") > > removed the CMA filter when allocating from the MIGRATE_MOVABLE pcp list > > because CMA is always allowed when __GFP_MOVABLE is set. > > > > With the introduction of the arch_alloc_cma() function, the above is not > > true anymore, so bring back the filter. > > This makes sense as arch_alloc_cma() now might prevent ALLOC_CMA being > assigned to alloc_flags in gfp_to_alloc_flags_cma(). Can I add your Reviewed-by tag then? Thanks, Alex > > > > > This is a partially revert because the stale comment remains removed. > > > > Signed-off-by: Alexandru Elisei <alexandru.elisei@xxxxxxx> > > --- > > mm/page_alloc.c | 15 +++++++++++---- > > 1 file changed, 11 insertions(+), 4 deletions(-) > > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > index a96d47a6393e..0fa34bcfb1af 100644 > > --- a/mm/page_alloc.c > > +++ b/mm/page_alloc.c > > @@ -2897,10 +2897,17 @@ struct page *rmqueue(struct zone *preferred_zone, > > WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1)); > > > > if (likely(pcp_allowed_order(order))) { > > - page = rmqueue_pcplist(preferred_zone, zone, order, > > - migratetype, alloc_flags); > > - if (likely(page)) > > - goto out; > > + /* > > + * MIGRATE_MOVABLE pcplist could have the pages on CMA area and > > + * we need to skip it when CMA area isn't allowed. > > + */ > > + if (!IS_ENABLED(CONFIG_CMA) || alloc_flags & ALLOC_CMA || > > + migratetype != MIGRATE_MOVABLE) { > > + page = rmqueue_pcplist(preferred_zone, zone, order, > > + migratetype, alloc_flags); > > + if (likely(page)) > > + goto out; > > + } > > } > > > > page = rmqueue_buddy(preferred_zone, zone, order, alloc_flags,