From 68a4d449ed36f87f214ab49d4aedd1f823a61ff2 Mon Sep 17 00:00:00 2001 From: tao zeng Date: Fri, 26 Oct 2018 17:51:30 +0800 Subject: [PATCH] mm: reduce watermark if free cma is too large [1/1] PD#SWPL-807 Problem: Sometimes driver can't allocation memory under atomic environment. And free pages is enough but they are nearly ALL CMA pages. Solution: Reduce watermark with harf of free cma pages even allocation support CMA. Verify: P212 Change-Id: I8e49768d4384ed064775537754a2b7f09a5bbb7c Signed-off-by: tao zeng --- mm/page_alloc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e79dba9..0862dcf 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2998,6 +2998,11 @@ bool __zone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark, /* If allocation can't use CMA areas don't use free CMA pages */ if (!(alloc_flags & ALLOC_CMA)) free_pages -= zone_page_state(z, NR_FREE_CMA_PAGES); +#ifdef CONFIG_AMLOGIC_CMA + /* avoid free pages in water mark are all CMA */ + else + free_pages -= zone_page_state(z, NR_FREE_CMA_PAGES) / 2; +#endif #endif /* -- 2.7.4