[PATCH v4 0/3] mm: hugetlb: fix CMA-related issues
From: Qi Zheng
Date: Wed Nov 11 2026 - 01:53:11 EST
From: Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx>
Hi all,
This series fixes three CMA-related issues in HugeTLB reservation,
long-term pinning and allocation:
- Avoid ineffective CMA reservations on 32-bit x86 kernels running on
CPUs that advertise 1 GiB page support.
- Allow long-term pins of explicitly CMA-allocated HugeTLB folios,
which already own the CMA memory.
- Preserve the caller's GFP mask when allocating from CMA.
Changes in v4:
- add comment to cma_alloc_frozen_compound().
(suggested by Oscar Salvador)
- collect Reviewed-by tag.
- rebase onto next-20261110.
Changes in v3:
- Drop the cpuset fix. A more comprehensive fix across the HugeTLB
allocation paths will follow in a separate patchset.
- Check for __GFP_COMP instead of adding it in
cma_alloc_frozen_compound(), and leave __GFP_NOWARN to callers.
(suggested by Oscar Salvador)
- Clarify the CMA ownership comment in folio_is_longterm_pinnable().
(suggested by Muchun Song)
- Collect Reviewed-by and Acked-by tags.
Changes in v2:
- Replace the PF_MEMALLOC_PIN allocation restriction with a GUP exception
for HugeTLB folios marked HPG_cma. (suggested by Muchun Song)
- Pass the caller's GFP mask through cma_alloc_frozen_compound() instead
of skipping CMA when direct reclaim is disallowed.
(suggested by sashiko)
- Remove unnecessary revalidation of successfully allocated folios after
cpuset changes. Retry only failed allocations.
(pointed by Jose A. Perez de Azpillaga)
- collect Reviewed-by and Acked-by.
- Rebase onto next-20261104.
Thanks,
Qi
Qi Zheng (3):
x86: hugetlb: disable default CMA reservations on 32-bit kernel
mm: gup: allow long-term pins of CMA-allocated HugeTLB folios
mm: hugetlb: fix GFP mask propagation to CMA
arch/x86/mm/hugetlbpage.c | 2 +-
include/linux/cma.h | 2 +-
include/linux/mm.h | 29 +----------------------------
mm/cma.c | 10 ++++++++--
mm/gup.c | 31 +++++++++++++++++++++++++++++++
mm/hugetlb_cma.c | 4 ++--
6 files changed, 44 insertions(+), 34 deletions(-)
base-commit: 793807ca13bf3072fc6d16ce6d90e9ab9beff2a5
--
2.54.0