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().
>
> This is a partially revert because the stale comment remains removed.
>
> Signed-off-by: Alexandru Elisei <[email protected]>
> ---
> 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,
- Re: [PATCH RFC v3 01/35] mm: page_alloc: Add gf... Alexandru Elisei
- Re: [PATCH RFC v3 01/35] mm: page_alloc: Ad... Anshuman Khandual
- Re: [PATCH RFC v3 01/35] mm: page_alloc... Alexandru Elisei
- [PATCH RFC v3 02/35] mm: page_alloc: Add an arch hook ea... Alexandru Elisei
- Re: [PATCH RFC v3 02/35] mm: page_alloc: Add an arc... Anshuman Khandual
- Re: [PATCH RFC v3 02/35] mm: page_alloc: Add an... Alexandru Elisei
- [PATCH RFC v3 03/35] mm: page_alloc: Add an arch hook to... Alexandru Elisei
- Re: [PATCH RFC v3 03/35] mm: page_alloc: Add an arc... Anshuman Khandual
- Re: [PATCH RFC v3 03/35] mm: page_alloc: Add an... Alexandru Elisei
- [PATCH RFC v3 04/35] mm: page_alloc: Partially revert &q... Alexandru Elisei
- Re: [PATCH RFC v3 04/35] mm: page_alloc: Partially ... Anshuman Khandual
- Re: [PATCH RFC v3 04/35] mm: page_alloc: Partia... Alexandru Elisei
- Re: [PATCH RFC v3 04/35] mm: page_alloc: Pa... Anshuman Khandual
- Re: [PATCH RFC v3 04/35] mm: page_alloc... Alexandru Elisei
- Re: [PATCH RFC v3 04/35] mm: page_... Anshuman Khandual
- [PATCH RFC v3 05/35] mm: cma: Don't append newline when ... Alexandru Elisei
- Re: [PATCH RFC v3 05/35] mm: cma: Don't append newl... Anshuman Khandual
- Re: [PATCH RFC v3 05/35] mm: cma: Don't append ... Alexandru Elisei
- [PATCH RFC v3 06/35] mm: cma: Make CMA_ALLOC_SUCCESS/FAI... Alexandru Elisei
- Re: [PATCH RFC v3 06/35] mm: cma: Make CMA_ALLOC_SU... Anshuman Khandual
- Re: [PATCH RFC v3 06/35] mm: cma: Make CMA_ALLO... Alexandru Elisei

