* [PATCH] mm: page_alloc: remove stale CMA guard code
@ 2023-08-24 15:38 Johannes Weiner
2023-08-25 9:40 ` Mel Gorman
0 siblings, 1 reply; 2+ messages in thread
From: Johannes Weiner @ 2023-08-24 15:38 UTC (permalink / raw)
To: Andrew Morton
Cc: Joonsoo Kim, Mel Gorman, Vlastimil Babka, David Hildenbrand,
Miaohe Lin, Pavel Tatashin, linux-mm, linux-kernel
In the past, movable allocations could be disallowed from CMA through
PF_MEMALLOC_PIN. As CMA pages are funneled through the MOVABLE
pcplist, this required filtering that cornercase during allocations,
such that pinnable allocations wouldn't accidentally get a CMA page.
However, since 8e3560d963d2 ("mm: honor PF_MEMALLOC_PIN for all
movable pages"), PF_MEMALLOC_PIN automatically excludes
__GFP_MOVABLE. Once again, MOVABLE implies CMA is allowed.
Remove the stale filtering code. Also remove a stale comment that was
introduced as part of the filtering code, because the filtering let
order-0 pages fall through to the buddy allocator. See 1d91df85f399
("mm/page_alloc: handle a missing case for
memalloc_nocma_{save/restore} APIs") for context. The comment's been
obsolete since the introduction of the explicit ALLOC_HIGHATOMIC flag
in eb2e2b425c69 ("mm/page_alloc: explicitly record high-order atomic
allocations in alloc_flags").
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
---
mm/page_alloc.c | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 5e14e31567df..2e1ee11ab49a 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2641,12 +2641,6 @@ struct page *rmqueue_buddy(struct zone *preferred_zone, struct zone *zone,
do {
page = NULL;
spin_lock_irqsave(&zone->lock, flags);
- /*
- * order-0 request can reach here when the pcplist is skipped
- * due to non-CMA allocation context. HIGHATOMIC area is
- * reserved for high-order atomic allocation, so order-0
- * request should skip it.
- */
if (alloc_flags & ALLOC_HIGHATOMIC)
page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
if (!page) {
@@ -2780,17 +2774,10 @@ struct page *rmqueue(struct zone *preferred_zone,
WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1));
if (likely(pcp_allowed_order(order))) {
- /*
- * 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_pcplist(preferred_zone, zone, order,
+ migratetype, alloc_flags);
+ if (likely(page))
+ goto out;
}
page = rmqueue_buddy(preferred_zone, zone, order, alloc_flags,
--
2.42.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] mm: page_alloc: remove stale CMA guard code
2023-08-24 15:38 [PATCH] mm: page_alloc: remove stale CMA guard code Johannes Weiner
@ 2023-08-25 9:40 ` Mel Gorman
0 siblings, 0 replies; 2+ messages in thread
From: Mel Gorman @ 2023-08-25 9:40 UTC (permalink / raw)
To: Johannes Weiner
Cc: Andrew Morton, Joonsoo Kim, Vlastimil Babka, David Hildenbrand,
Miaohe Lin, Pavel Tatashin, linux-mm, linux-kernel
On Thu, Aug 24, 2023 at 11:38:21AM -0400, Johannes Weiner wrote:
> In the past, movable allocations could be disallowed from CMA through
> PF_MEMALLOC_PIN. As CMA pages are funneled through the MOVABLE
> pcplist, this required filtering that cornercase during allocations,
> such that pinnable allocations wouldn't accidentally get a CMA page.
>
> However, since 8e3560d963d2 ("mm: honor PF_MEMALLOC_PIN for all
> movable pages"), PF_MEMALLOC_PIN automatically excludes
> __GFP_MOVABLE. Once again, MOVABLE implies CMA is allowed.
>
> Remove the stale filtering code. Also remove a stale comment that was
> introduced as part of the filtering code, because the filtering let
> order-0 pages fall through to the buddy allocator. See 1d91df85f399
> ("mm/page_alloc: handle a missing case for
> memalloc_nocma_{save/restore} APIs") for context. The comment's been
> obsolete since the introduction of the explicit ALLOC_HIGHATOMIC flag
> in eb2e2b425c69 ("mm/page_alloc: explicitly record high-order atomic
> allocations in alloc_flags").
>
> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Mel Gorman <mgorman@techsingularity.net>
--
Mel Gorman
SUSE Labs
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-08-25 9:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-24 15:38 [PATCH] mm: page_alloc: remove stale CMA guard code Johannes Weiner
2023-08-25 9:40 ` Mel Gorman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox