Re: [PATCH v3 2/2] dma-contiguous: Use fallback alloc_pages for single pages
From: Nicolin Chen <nicoleotsuka@gmail.com>
Date: 2019-05-27 10:56:45
Also in:
linux-iommu, lkml
Hi Ira, On Fri, May 24, 2019 at 09:16:19AM -0700, Ira Weiny wrote:
On Thu, May 23, 2019 at 09:06:33PM -0700, Nicolin Chen wrote:quoted
The addresses within a single page are always contiguous, so it's not so necessary to always allocate one single page from CMA area. Since the CMA area has a limited predefined size of space, it may run out of space in heavy use cases, where there might be quite a lot CMA pages being allocated for single pages. However, there is also a concern that a device might care where a page comes from -- it might expect the page from CMA area and act differently if the page doesn't.How does a device know, after this call, if a CMA area was used? From the patches I figured a device should not care.
A device doesn't know. But that doesn't mean a device won't care at all. There was a concern from Robin and Christoph, as a corner case that device might act differently if the memory isn't in its own CMA region. That's why we let it still use its device specific CMA area.
quoted
+ if (dev && dev->cma_area) + cma = dev->cma_area; + else if (count > 1) + cma = dma_contiguous_default_area;Doesn't dev_get_dma_area() already do this?
Partially yes. But unwrapping it makes the program flow clear in my opinion. Actually I should have mentioned that this patch was suggested by Christoph also. Otherwise, it would need an override like: cma = dev_get_dma_area(); if (count > 1 && cma == dma_contiguous_default_area) cma = NULL; Which doesn't look that bad though.. Thanks Nicolin _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel