Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1195688

[PATCH] CMA: Don't return a valid cma for non-cma dev

From Feng Tang <feng.tang@intel.com>
Newsgroups linux.kernel
Subject [PATCH] CMA: Don't return a valid cma for non-cma dev
Date 2015-07-30 04:50 +0200
Message-ID <pRM4W-1Xp-1@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


When system(one x86 soc) boot, we saw many normal dma allocation requests
goes to cma area. The call chain is
	dma_generic_alloc_coherent
	    dma_alloc_from_contiguous	-- arch/x86/kernel/pci-dma.c
	        cma_alloc(dev_get_cma_area(dev), count, align)

Current dev_get_cma_area() will return a valid "cma" anyway. Then all
these requests will be taken as valid cma request, and get pages from
cma area, which has 2 problems:
1. make the cma area fragmented
2. confuse the cma reservation, usually cma memory size is set according
   to the expectation of system scenario, these unexpected requests
   will affect the designed cma usage.

So this patch will enforce the judgement, and only return valid "cma"
for real cma user, thus make normal user like IO device driver not
abuse cma reserved region.

Signed-off-by: Feng Tang <feng.tang@intel.com>
---
 include/linux/dma-contiguous.h |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/linux/dma-contiguous.h b/include/linux/dma-contiguous.h
index 569bbd0..d6ccc19 100644
--- a/include/linux/dma-contiguous.h
+++ b/include/linux/dma-contiguous.h
@@ -66,7 +66,8 @@ static inline struct cma *dev_get_cma_area(struct device *dev)
 {
 	if (dev && dev->cma_area)
 		return dev->cma_area;
-	return dma_contiguous_default_area;
+	else
+		return NULL;
 }
 
 static inline void dev_set_cma_area(struct device *dev, struct cma *cma)
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH] CMA: Don't return a valid cma for non-cma dev Feng Tang <feng.tang@intel.com> - 2015-07-30 04:50 +0200
  Re: [PATCH] CMA: Don't return a valid cma for non-cma dev Feng Tang <feng.tang@intel.com> - 2015-07-31 17:10 +0200

csiph-web