diff options
author | Rob Clark <robdclark@gmail.com> | 2014-07-01 14:49:55 -0400 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2014-08-04 11:55:29 -0400 |
commit | 1c4997fe4157c4d715cead67fca1a5085991ac0f (patch) | |
tree | 6920f4d4f7175903138dca628ff93fa52b36d2ef | |
parent | 036c17082adae0014c53dc2ff9e813abf13bc3b8 (diff) |
drm/msm: no mmu is only error if not using vram carveout
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 713722b0ba78..4b1b82adabde 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c | |||
@@ -278,24 +278,23 @@ int msm_gem_get_iova_locked(struct drm_gem_object *obj, int id, | |||
278 | uint32_t *iova) | 278 | uint32_t *iova) |
279 | { | 279 | { |
280 | struct msm_gem_object *msm_obj = to_msm_bo(obj); | 280 | struct msm_gem_object *msm_obj = to_msm_bo(obj); |
281 | struct drm_device *dev = obj->dev; | ||
282 | int ret = 0; | 281 | int ret = 0; |
283 | 282 | ||
284 | if (!msm_obj->domain[id].iova) { | 283 | if (!msm_obj->domain[id].iova) { |
285 | struct msm_drm_private *priv = obj->dev->dev_private; | 284 | struct msm_drm_private *priv = obj->dev->dev_private; |
286 | struct msm_mmu *mmu = priv->mmus[id]; | ||
287 | struct page **pages = get_pages(obj); | 285 | struct page **pages = get_pages(obj); |
288 | 286 | ||
289 | if (!mmu) { | ||
290 | dev_err(dev->dev, "null MMU pointer\n"); | ||
291 | return -EINVAL; | ||
292 | } | ||
293 | |||
294 | if (IS_ERR(pages)) | 287 | if (IS_ERR(pages)) |
295 | return PTR_ERR(pages); | 288 | return PTR_ERR(pages); |
296 | 289 | ||
297 | if (iommu_present(&platform_bus_type)) { | 290 | if (iommu_present(&platform_bus_type)) { |
298 | uint32_t offset = (uint32_t)mmap_offset(obj); | 291 | struct msm_mmu *mmu = priv->mmus[id]; |
292 | uint32_t offset; | ||
293 | |||
294 | if (WARN_ON(!mmu)) | ||
295 | return -EINVAL; | ||
296 | |||
297 | offset = (uint32_t)mmap_offset(obj); | ||
299 | ret = mmu->funcs->map(mmu, offset, msm_obj->sgt, | 298 | ret = mmu->funcs->map(mmu, offset, msm_obj->sgt, |
300 | obj->size, IOMMU_READ | IOMMU_WRITE); | 299 | obj->size, IOMMU_READ | IOMMU_WRITE); |
301 | msm_obj->domain[id].iova = offset; | 300 | msm_obj->domain[id].iova = offset; |