From 018cb6845f81891ed49061653b4a033663f5c0ca Mon Sep 17 00:00:00 2001 From: Karthik Anantha Ram Date: Tue, 17 Mar 2020 18:30:01 -0700 Subject: [PATCH] msm: camera: smmu: Remove extra shared mem map Cleans up extra mapping used to get the scatter list entries. CRs-Fixed: 2702021 Change-Id: I787159169e3b3d1259e41e51c0534bd68bcbb326 Signed-off-by: Karthik Anantha Ram Signed-off-by: Karthik Jayakumar --- drivers/cam_smmu/cam_smmu_api.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/cam_smmu/cam_smmu_api.c b/drivers/cam_smmu/cam_smmu_api.c index 7376c2964f..ad6f9a2a77 100644 --- a/drivers/cam_smmu/cam_smmu_api.c +++ b/drivers/cam_smmu/cam_smmu_api.c @@ -1933,7 +1933,7 @@ static int cam_smmu_map_buffer_validate(struct dma_buf *buf, } else { CAM_ERR(CAM_SMMU, "Error: Wrong region id passed"); rc = -EINVAL; - goto err_unmap_sg; + goto err_detach; } CAM_DBG(CAM_SMMU, @@ -1989,6 +1989,10 @@ static int cam_smmu_map_buffer_validate(struct dma_buf *buf, idx, buf, (void *)iommu_cb_set.cb_info[idx].dev, (void *)*paddr_ptr, (unsigned int)*len_ptr); + /* Unmap the mapping in dma region as this is not used anyway */ + if (region_id == CAM_SMMU_REGION_SHARED) + dma_buf_unmap_attachment(attach, table, dma_dir); + return 0; err_alloc: @@ -2135,14 +2139,16 @@ static int cam_smmu_unmap_buf_and_remove_from_list( iommu_cb_set.cb_info[idx].shared_mapping_size -= mapping_info->len; } else if (mapping_info->region_id == CAM_SMMU_REGION_IO) { + if (mapping_info->is_internal) + mapping_info->attach->dma_map_attrs |= + DMA_ATTR_SKIP_CPU_SYNC; + + dma_buf_unmap_attachment(mapping_info->attach, + mapping_info->table, mapping_info->dir); iommu_cb_set.cb_info[idx].io_mapping_size -= mapping_info->len; } - if (mapping_info->is_internal) - mapping_info->attach->dma_map_attrs |= DMA_ATTR_SKIP_CPU_SYNC; - dma_buf_unmap_attachment(mapping_info->attach, - mapping_info->table, mapping_info->dir); dma_buf_detach(mapping_info->buf, mapping_info->attach); dma_buf_put(mapping_info->buf);