From bfce6910d4622e3aefba36c64274fd21318aaf68 Mon Sep 17 00:00:00 2001 From: Jianqun Xu Date: Wed, 4 Aug 2021 09:13:57 +0800 Subject: [PATCH] staging: ion: bypass for start cpu access if dir is DMA_TO_DEVICE From the final function ENTRY(__dma_unmap_area) cmp w2, #DMA_TO_DEVICE b.ne __dma_inv_area ret ENDPIPROC(__dma_unmap_area) if the direction isn't DMA_TO_DEVICE, it will do __dma_inv_area. So directly return if the dir is DMA_TO_DEVICE. Change-Id: I9ec2affddb8efb431a165100d78afca7fe6b2a45 Signed-off-by: Jianqun Xu --- drivers/staging/android/ion/ion.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c index e3051e99b200..5a17f9b6f147 100644 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -485,6 +485,9 @@ static int ion_dma_buf_begin_cpu_access(struct dma_buf *dmabuf, mutex_unlock(&buffer->lock); } + if (direction == DMA_TO_DEVICE) + return 0; + mutex_lock(&buffer->lock); if (IS_ENABLED(CONFIG_ION_FORCE_DMA_SYNC)) { struct device *dev = ion_dev; @@ -555,6 +558,9 @@ static int ion_dma_buf_begin_cpu_access_partial(struct dma_buf *dmabuf, struct ion_dma_buf_attachment *a; int ret = 0; + if (direction == DMA_TO_DEVICE) + return 0; + mutex_lock(&buffer->lock); if (IS_ENABLED(CONFIG_ION_FORCE_DMA_SYNC)) { struct device *dev = ion_dev;