From a14f22c34c1dba0cf8107abf99b04a9052fdc6b4 Mon Sep 17 00:00:00 2001 From: Guchun Chen Date: Wed, 7 Jun 2017 20:00:30 -0700 Subject: [PATCH] Revert "msm: smmu: add re-route calling for specified iova." This reverts commit ae94b477afd5d71221964250395d8f109ddb5b06. This change brings side effect of smmu fault in apq8098 project. It blocks their regression test. Change-Id: Ia479188eca74ec988026f7d42207435da2f79bfc Signed-off-by: Guchun Chen --- drivers/gpu/drm/msm/msm_smmu.c | 56 +++++++++++------------------------------- 1 file changed, 14 insertions(+), 42 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_smmu.c b/drivers/gpu/drm/msm/msm_smmu.c index a6efb22b5ed4..c2dd5f96521e 100644 --- a/drivers/gpu/drm/msm/msm_smmu.c +++ b/drivers/gpu/drm/msm/msm_smmu.c @@ -120,30 +120,16 @@ static int msm_smmu_map(struct msm_mmu *mmu, uint64_t iova, { struct msm_smmu *smmu = to_msm_smmu(mmu); struct msm_smmu_client *client = msm_smmu_to_client(smmu); - struct iommu_domain *domain; int ret; - if (!client || !sgt) - return -EINVAL; - - if (iova != 0) { - if (!client->mmu_mapping || !client->mmu_mapping->domain) - return -EINVAL; - - domain = client->mmu_mapping->domain; - - return iommu_map_sg(domain, iova, sgt->sgl, - sgt->nents, flags); - } else { - if (priv) - ret = msm_dma_map_sg_lazy(client->dev, sgt->sgl, - sgt->nents, DMA_BIDIRECTIONAL, priv); - else - ret = dma_map_sg(client->dev, sgt->sgl, sgt->nents, - DMA_BIDIRECTIONAL); + if (priv) + ret = msm_dma_map_sg_lazy(client->dev, sgt->sgl, sgt->nents, + DMA_BIDIRECTIONAL, priv); + else + ret = dma_map_sg(client->dev, sgt->sgl, sgt->nents, + DMA_BIDIRECTIONAL); - return (ret != sgt->nents) ? -ENOMEM : 0; - } + return (ret != sgt->nents) ? -ENOMEM : 0; } static void msm_smmu_unmap(struct msm_mmu *mmu, uint64_t iova, @@ -151,27 +137,13 @@ static void msm_smmu_unmap(struct msm_mmu *mmu, uint64_t iova, { struct msm_smmu *smmu = to_msm_smmu(mmu); struct msm_smmu_client *client = msm_smmu_to_client(smmu); - struct iommu_domain *domain = client->mmu_mapping->domain; - struct scatterlist *sg; - size_t len = 0; - int unmapped, i = 0; - - if (iova != 0) { - for_each_sg(sgt->sgl, sg, sgt->nents, i) - len += sg->length; - - unmapped = iommu_unmap(domain, iova, len); - if (unmapped < len) - dev_warn(mmu->dev, - "could not unmap iova@%llx\n", iova); - } else { - if (priv) - msm_dma_unmap_sg(client->dev, sgt->sgl, - sgt->nents, DMA_BIDIRECTIONAL, priv); - else - dma_unmap_sg(client->dev, sgt->sgl, sgt->nents, - DMA_BIDIRECTIONAL); - } + + if (priv) + msm_dma_unmap_sg(client->dev, sgt->sgl, sgt->nents, + DMA_BIDIRECTIONAL, priv); + else + dma_unmap_sg(client->dev, sgt->sgl, sgt->nents, + DMA_BIDIRECTIONAL); } static void msm_smmu_destroy(struct msm_mmu *mmu) -- 2.11.0