drm/msm: no mmu is only error if not using vram carveout
authorRob Clark <robdclark@gmail.com>
Tue, 1 Jul 2014 18:49:55 +0000 (14:49 -0400)
committerRob Clark <robdclark@gmail.com>
Mon, 4 Aug 2014 15:55:29 +0000 (11:55 -0400)
Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/msm_gem.c

index 713722b0ba7849892aa0816690929374e047ac38..4b1b82adabdeaa504cd63ca290ff37f6acc223de 100644 (file)
@@ -278,24 +278,23 @@ int msm_gem_get_iova_locked(struct drm_gem_object *obj, int id,
                uint32_t *iova)
 {
        struct msm_gem_object *msm_obj = to_msm_bo(obj);
-       struct drm_device *dev = obj->dev;
        int ret = 0;
 
        if (!msm_obj->domain[id].iova) {
                struct msm_drm_private *priv = obj->dev->dev_private;
-               struct msm_mmu *mmu = priv->mmus[id];
                struct page **pages = get_pages(obj);
 
-               if (!mmu) {
-                       dev_err(dev->dev, "null MMU pointer\n");
-                       return -EINVAL;
-               }
-
                if (IS_ERR(pages))
                        return PTR_ERR(pages);
 
                if (iommu_present(&platform_bus_type)) {
-                       uint32_t offset = (uint32_t)mmap_offset(obj);
+                       struct msm_mmu *mmu = priv->mmus[id];
+                       uint32_t offset;
+
+                       if (WARN_ON(!mmu))
+                               return -EINVAL;
+
+                       offset = (uint32_t)mmap_offset(obj);
                        ret = mmu->funcs->map(mmu, offset, msm_obj->sgt,
                                        obj->size, IOMMU_READ | IOMMU_WRITE);
                        msm_obj->domain[id].iova = offset;