mm: cma: retry only on EBUSY
Retry the cma alloc only when alloc_contig_range returns
-EBUSY. This avoids unnecessary retries when the heap is
full.
Change-Id: If4626f0a0bc14e4b3a500283eb5a4c33b78fb6f2
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
diff --git a/mm/cma.c b/mm/cma.c
index e97ad01..1ccfaa1 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -466,7 +466,8 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align)
bitmap_maxno, start, bitmap_count, mask,
offset);
if (bitmap_no >= bitmap_maxno) {
- if (retry_after_sleep < max_retries) {
+ if ((retry_after_sleep < max_retries) &&
+ (ret == -EBUSY)) {
start = 0;
/*
* update max retries if available free regions