diff mbox series

[v9,16/32] drm: rockchip: use common helper for a scatterlist contiguity check

Message ID 20200826063316.23486-17-m.szyprowski@samsung.com
State Superseded
Headers show
Series DRM: fix struct sg_table nents vs. orig_nents misuse | expand

Commit Message

Marek Szyprowski Aug. 26, 2020, 6:33 a.m. UTC
Use common helper for checking the contiguity of the imported dma-buf.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

---
 drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 19 +------------------
 1 file changed, 1 insertion(+), 18 deletions(-)

-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Comments

Robin Murphy Sept. 1, 2020, 7:34 p.m. UTC | #1
On 2020-08-26 07:33, Marek Szyprowski wrote:
> Use common helper for checking the contiguity of the imported dma-buf.


Reviewed-by: Robin Murphy <robin.murphy@arm.com>


> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

> ---

>   drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 19 +------------------

>   1 file changed, 1 insertion(+), 18 deletions(-)

> 

> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c

> index b9275ba7c5a5..2970e534e2bb 100644

> --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c

> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c

> @@ -460,23 +460,6 @@ struct sg_table *rockchip_gem_prime_get_sg_table(struct drm_gem_object *obj)

>   	return sgt;

>   }

>   

> -static unsigned long rockchip_sg_get_contiguous_size(struct sg_table *sgt,

> -						     int count)

> -{

> -	struct scatterlist *s;

> -	dma_addr_t expected = sg_dma_address(sgt->sgl);

> -	unsigned int i;

> -	unsigned long size = 0;

> -

> -	for_each_sg(sgt->sgl, s, count, i) {

> -		if (sg_dma_address(s) != expected)

> -			break;

> -		expected = sg_dma_address(s) + sg_dma_len(s);

> -		size += sg_dma_len(s);

> -	}

> -	return size;

> -}

> -

>   static int

>   rockchip_gem_iommu_map_sg(struct drm_device *drm,

>   			  struct dma_buf_attachment *attach,

> @@ -498,7 +481,7 @@ rockchip_gem_dma_map_sg(struct drm_device *drm,

>   	if (!count)

>   		return -EINVAL;

>   

> -	if (rockchip_sg_get_contiguous_size(sg, count) < attach->dmabuf->size) {

> +	if (drm_prime_get_contiguous_size(sg) < attach->dmabuf->size) {

>   		DRM_ERROR("failed to map sg_table to contiguous linear address.\n");

>   		dma_unmap_sg(drm->dev, sg->sgl, sg->nents,

>   			     DMA_BIDIRECTIONAL);

> 

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
index b9275ba7c5a5..2970e534e2bb 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
@@ -460,23 +460,6 @@  struct sg_table *rockchip_gem_prime_get_sg_table(struct drm_gem_object *obj)
 	return sgt;
 }
 
-static unsigned long rockchip_sg_get_contiguous_size(struct sg_table *sgt,
-						     int count)
-{
-	struct scatterlist *s;
-	dma_addr_t expected = sg_dma_address(sgt->sgl);
-	unsigned int i;
-	unsigned long size = 0;
-
-	for_each_sg(sgt->sgl, s, count, i) {
-		if (sg_dma_address(s) != expected)
-			break;
-		expected = sg_dma_address(s) + sg_dma_len(s);
-		size += sg_dma_len(s);
-	}
-	return size;
-}
-
 static int
 rockchip_gem_iommu_map_sg(struct drm_device *drm,
 			  struct dma_buf_attachment *attach,
@@ -498,7 +481,7 @@  rockchip_gem_dma_map_sg(struct drm_device *drm,
 	if (!count)
 		return -EINVAL;
 
-	if (rockchip_sg_get_contiguous_size(sg, count) < attach->dmabuf->size) {
+	if (drm_prime_get_contiguous_size(sg) < attach->dmabuf->size) {
 		DRM_ERROR("failed to map sg_table to contiguous linear address.\n");
 		dma_unmap_sg(drm->dev, sg->sgl, sg->nents,
 			     DMA_BIDIRECTIONAL);