[PATCH v3] mm: cma: indefinitely retry allocations in cma_alloc

From: Chris Goldsworthy
Date: Thu Sep 24 2020 - 01:17:40 EST


V1: Introduces a retry loop that attempts a CMA allocation a finite
number of times before giving up:

https://lkml.org/lkml/2020/8/5/1097
https://lkml.org/lkml/2020/8/11/893

V2: Introduces an indefinite retry for CMA allocations. David Hildenbrand
raised a page pinning example which precludes doing this infite-retrying
for all CMA users:

https://lkml.org/lkml/2020/9/17/984

V3: Re-introduce a GFP mask argument for cma_alloc(), that can take in
__GFP_NOFAIL as an argument to indicate that a CMA allocation should be
retried indefinitely. This lets callers of cma_alloc() decide if they want
to perform indefinite retires. Also introduces a config option for
controlling the duration of the sleep between retries.

Chris Goldsworthy (1):
mm: cma: indefinitely retry allocations in cma_alloc

arch/powerpc/kvm/book3s_hv_builtin.c | 2 +-
drivers/dma-buf/heaps/cma_heap.c | 2 +-
drivers/s390/char/vmcp.c | 2 +-
drivers/staging/android/ion/ion_cma_heap.c | 2 +-
include/linux/cma.h | 2 +-
kernel/dma/contiguous.c | 4 ++--
mm/Kconfig | 11 ++++++++++
mm/cma.c | 35 +++++++++++++++++++++++++-----
mm/cma_debug.c | 2 +-
mm/hugetlb.c | 4 ++--
10 files changed, 50 insertions(+), 16 deletions(-)

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project