OSDN Git Service

Revert "msm: smmu: add re-route calling for specified iova."
authorGuchun Chen <guchunc@qti.qualcomm.com>
Thu, 8 Jun 2017 03:00:30 +0000 (20:00 -0700)
committerGerrit - the friendly Code Review server <code-review@localhost>
Thu, 8 Jun 2017 03:00:30 +0000 (20:00 -0700)
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 <guchunc@codeaurora.org>
drivers/gpu/drm/msm/msm_smmu.c

index a6efb22..c2dd5f9 100644 (file)
@@ -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)