Re: [PATCH] iommu/dma: Apply dma_{alloc,free}_contiguous functions
From: Christoph Hellwig
Date: Thu Jun 06 2019 - 02:33:12 EST
Looks fine to me. Robin, any comments?
On Mon, Jun 03, 2019 at 03:52:59PM -0700, Nicolin Chen wrote:
> This patch replaces dma_{alloc,release}_from_contiguous() with
> dma_{alloc,free}_contiguous() to simplify those function calls.
>
> Signed-off-by: Nicolin Chen <nicoleotsuka@xxxxxxxxx>
> ---
> drivers/iommu/dma-iommu.c | 14 ++++----------
> 1 file changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
> index 0cd49c2d3770..cc3d39dbbe1a 100644
> --- a/drivers/iommu/dma-iommu.c
> +++ b/drivers/iommu/dma-iommu.c
> @@ -951,8 +951,8 @@ static void __iommu_dma_free(struct device *dev, size_t size, void *cpu_addr)
>
> if (pages)
> __iommu_dma_free_pages(pages, count);
> - if (page && !dma_release_from_contiguous(dev, page, count))
> - __free_pages(page, get_order(alloc_size));
> + if (page)
> + dma_free_contiguous(dev, page, alloc_size);
> }
>
> static void iommu_dma_free(struct device *dev, size_t size, void *cpu_addr,
> @@ -970,12 +970,7 @@ static void *iommu_dma_alloc_pages(struct device *dev, size_t size,
> struct page *page = NULL;
> void *cpu_addr;
>
> - if (gfpflags_allow_blocking(gfp))
> - page = dma_alloc_from_contiguous(dev, alloc_size >> PAGE_SHIFT,
> - get_order(alloc_size),
> - gfp & __GFP_NOWARN);
> - if (!page)
> - page = alloc_pages(gfp, get_order(alloc_size));
> + page = dma_alloc_contiguous(dev, alloc_size, gfp);
> if (!page)
> return NULL;
>
> @@ -997,8 +992,7 @@ static void *iommu_dma_alloc_pages(struct device *dev, size_t size,
> memset(cpu_addr, 0, alloc_size);
> return cpu_addr;
> out_free_pages:
> - if (!dma_release_from_contiguous(dev, page, alloc_size >> PAGE_SHIFT))
> - __free_pages(page, get_order(alloc_size));
> + dma_free_contiguous(dev, page, alloc_size);
> return NULL;
> }
>
> --
> 2.17.1
---end quoted text---