From ce93adb4e411b0cc3ac63f9c77a37ba0e909ec7c Mon Sep 17 00:00:00 2001 From: Jianqun Xu Date: Fri, 6 Aug 2021 15:02:41 +0800 Subject: [PATCH] rknpu: gem: fix error sg_dma_addr for iommu case Fixes: 9a93c881e9dd ("driver: rknpu: Add rknpu driver for rk356x, version: 0.4.2") Change-Id: I33a85f5eea54912113575d307977961424e28c0e Signed-off-by: Jianqun Xu --- drivers/rknpu/rknpu_gem.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/rknpu/rknpu_gem.c b/drivers/rknpu/rknpu_gem.c index 76080cf121b4..5f4d6ff99472 100644 --- a/drivers/rknpu/rknpu_gem.c +++ b/drivers/rknpu/rknpu_gem.c @@ -937,7 +937,6 @@ int rknpu_gem_sync_ioctl(struct drm_device *dev, void *data, } else { length = args->size; offset = args->offset; - sg_dma_addr = rknpu_obj->dma_addr; for_each_sg(rknpu_obj->sgt->sgl, sg, rknpu_obj->sgt->nents, i) { @@ -945,6 +944,7 @@ int rknpu_gem_sync_ioctl(struct drm_device *dev, void *data, if (len <= offset) continue; + sg_dma_addr = sg_dma_address(sg); sg_left = len - offset; sg_offset = sg->length - sg_left; size = (length < sg_left) ? length : sg_left; @@ -964,7 +964,6 @@ int rknpu_gem_sync_ioctl(struct drm_device *dev, void *data, offset += size; length -= size; - sg_dma_addr += sg->length; if (length == 0) break;