summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPankaj Gupta <quic_gpankaj@quicinc.com>2023-01-11 18:48:36 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2023-03-06 04:53:50 -0800
commitd0f7fc0412b8769039f1e88db393823b2f5be7ed (patch)
tree0d2396c2f82b7c0a58ef562af8c0c881329d4a87
parent56f897d61e54c87bee2b887a0bec280127382fb4 (diff)
downloadgraphics-d0f7fc0412b8769039f1e88db393823b2f5be7ed.tar.gz
Revert "msm: kgsl: Call dma_buf_unmap_attachment() early"
This reverts msm-5.10 commit b84bd97e37f8ac3a0f3194ebcbb1fa962e42cd73. Warnings for direct dma clients during cache operations are now being handled by dma-buf driver. Instead of doing dma_buf_unmap_attachment early if we do it in destroy path, it helps in saving cycles and improving performance during app launch. Change-Id: Ic66dd3b66136318abf59685f95fee17890377fd4 Signed-off-by: Pankaj Gupta <quic_gpankaj@quicinc.com> Signed-off-by: Archana Sriram <quic_c_apsrir@quicinc.com>
-rw-r--r--kgsl.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kgsl.c b/kgsl.c
index eb4e820..1d3e1aa 100644
--- a/kgsl.c
+++ b/kgsl.c
@@ -332,6 +332,7 @@ static void kgsl_destroy_ion(struct kgsl_memdesc *memdesc)
if (metadata != NULL) {
remove_dmabuf_list(metadata);
+ dma_buf_unmap_attachment(metadata->attach, memdesc->sgt, DMA_BIDIRECTIONAL);
dma_buf_detach(metadata->dmabuf, metadata->attach);
dma_buf_put(metadata->dmabuf);
kfree(metadata);
@@ -3289,7 +3290,7 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device,
{
int ret = 0;
struct scatterlist *s;
- struct sg_table *sg_table;
+ struct sg_table *sg_table = NULL;
struct dma_buf_attachment *attach = NULL;
struct kgsl_dma_buf_meta *metadata;
@@ -3331,8 +3332,6 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device,
goto out;
}
- dma_buf_unmap_attachment(attach, sg_table, DMA_BIDIRECTIONAL);
-
metadata->table = sg_table;
entry->priv_data = metadata;
entry->memdesc.sgt = sg_table;
@@ -3355,6 +3354,9 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device,
out:
if (ret) {
+ if (!IS_ERR_OR_NULL(sg_table))
+ dma_buf_unmap_attachment(attach, sg_table, DMA_BIDIRECTIONAL);
+
if (!IS_ERR_OR_NULL(attach))
dma_buf_detach(dmabuf, attach);