From 13dbe9c7752188e6ac0420ce5e5ef353d238f9cf Mon Sep 17 00:00:00 2001 From: Jianqun Xu Date: Fri, 6 Aug 2021 14:58:13 +0800 Subject: [PATCH] drm/rockchip: fix error sg_dma_addr for iommu case Fixes: e68e6d1a35b7 ("drm/rockchip: add dmabuf sync partial to dma_buf_ops") Change-Id: I7499f049243b1c5bfe88793cd141730a90aef180 Signed-off-by: Jianqun Xu --- drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c index d9ee7689eb2e..c252b9bc823b 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c @@ -980,15 +980,11 @@ static int rockchip_gem_prime_sgl_sync_range(struct device *dev, for_each_sg(sgl, sg, nents, i) { unsigned int sg_offset, sg_left, size = 0; - if (i == 0) - sg_dma_addr = sg_dma_address(sg); - len += sg->length; - if (len <= offset) { - sg_dma_addr += sg->length; + if (len <= offset) continue; - } + sg_dma_addr = sg_dma_address(sg); sg_left = len - offset; sg_offset = sg->length - sg_left; @@ -1002,7 +998,6 @@ static int rockchip_gem_prime_sgl_sync_range(struct device *dev, offset += size; length -= size; - sg_dma_addr += sg->length; if (length == 0) break;