If unsure, leave the default value "7".
+config CMA_ALLOC_RETRY
+ int "Maximum count to retry of the CMA Allocation"
+ depends on ARCH_ROCKCHIP
+ default 20
+ help
+ CMA allocation range may be busy at this time, we can try again a few
+ time to make allocate successful.
+
endif
endmenu
mutex_lock(&cma_mutex);
for (;;) {
+#ifdef CONFIG_CMA_ALLOC_RETRY
+ int retry = 0;
+#endif
pageno = bitmap_find_next_zero_area(cma->bitmap, cma->count,
start, count, mask);
if (pageno >= cma->count)
break;
pfn = cma->base_pfn + pageno;
+#ifdef CONFIG_CMA_ALLOC_RETRY
+ do {
+#endif
ret = alloc_contig_range(pfn, pfn + count, MIGRATE_CMA);
if (ret == 0) {
bitmap_set(cma->bitmap, pageno, count);
} else if (ret != -EBUSY) {
break;
}
+#ifdef CONFIG_CMA_ALLOC_RETRY
+ }while (++retry<=CONFIG_CMA_ALLOC_RETRY);
+
+ if (retry<=CONFIG_CMA_ALLOC_RETRY)
+ break;
+#endif
pr_debug("%s(): memory range at %p is busy, retrying\n",
__func__, pfn_to_page(pfn));
/* try again with a bit different memory target */