Files
kernel/include/linux
Nicolin Chen b1d2dc009d dma-contiguous: add dma_{alloc,free}_contiguous() helpers
Both dma_alloc_from_contiguous() and dma_release_from_contiguous() are
very simply implemented, but requiring callers to pass certain
parameters like count and align, and taking a boolean parameter to check
__GFP_NOWARN in the allocation flags. So every function call duplicates
similar work:

	unsigned long order = get_order(size);
	size_t count = size >> PAGE_SHIFT;

	page = dma_alloc_from_contiguous(dev, count, order,
			gfp & __GFP_NOWARN);

	[...]

	dma_release_from_contiguous(dev, page, size >> PAGE_SHIFT);

Additionally, as CMA can be used only in the context which permits
sleeping, most of callers do a gfpflags_allow_blocking() check and a
corresponding fallback allocation of normal pages upon any false result:

	if (gfpflags_allow_blocking(flag))
		page = dma_alloc_from_contiguous();
	if (!page)
		page = alloc_pages();

	[...]

	if (!dma_release_from_contiguous(dev, page, count))
		__free_pages(page, get_order(size));

So this patch simplifies those function calls by abstracting these
operations into the two new functions: dma_{alloc,free}_contiguous.

As some callers of dma_{alloc,release}_from_contiguous() might be
complicated, this patch just implements these two new functions to
kernel/dma/direct.c only as an initial step.

Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
Tested-by: dann frazier <dann.frazier@canonical.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2019-06-03 16:00:07 +02:00
..
2019-05-02 10:37:55 +09:00
2019-04-15 18:14:01 -04:00
2019-05-14 19:52:50 -07:00
2019-04-23 01:50:43 +02:00
2019-04-09 17:05:46 -07:00
2019-05-07 08:39:02 -06:00
2019-04-19 11:26:48 -07:00
2019-05-09 15:25:13 -04:00
2019-03-12 10:04:02 -07:00
2019-04-22 09:48:12 -06:00
2019-03-22 14:36:02 +01:00
2019-05-01 07:47:37 -07:00
2019-04-08 22:56:14 +02:00
2019-04-19 14:07:40 -07:00
2019-05-14 09:47:51 -07:00
2019-05-07 14:31:03 +02:00
2019-03-12 10:04:03 -07:00
2019-05-14 19:52:51 -07:00
2019-05-14 19:52:48 -07:00
2019-04-02 17:57:35 +02:00
2019-05-08 22:14:36 +02:00
2019-05-16 15:51:55 -07:00
2019-03-15 15:29:47 -07:00
2019-04-06 10:48:35 -06:00
2019-05-01 08:38:47 -06:00
2019-04-30 12:37:51 +02:00
2019-05-15 17:35:54 +01:00
2019-04-09 15:14:49 -06:00