diff options
| -rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_mman.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c | 18 | 
4 files changed, 14 insertions, 14 deletions
| diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c index aaf970c37aa2..1478c02a82cb 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c @@ -538,6 +538,9 @@ void i915_gem_object_release_mmap_offset(struct drm_i915_gem_object *obj)  {  	struct i915_mmap_offset *mmo, *mn; +	if (obj->ops->unmap_virtual) +		obj->ops->unmap_virtual(obj); +  	spin_lock(&obj->mmo.lock);  	rbtree_postorder_for_each_entry_safe(mmo, mn,  					     &obj->mmo.offsets, offset) { diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h index f9f7e44099fe..4b4829eb16c2 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h @@ -67,6 +67,7 @@ struct drm_i915_gem_object_ops {  	int (*pwrite)(struct drm_i915_gem_object *obj,  		      const struct drm_i915_gem_pwrite *arg);  	u64 (*mmap_offset)(struct drm_i915_gem_object *obj); +	void (*unmap_virtual)(struct drm_i915_gem_object *obj);  	int (*dmabuf_export)(struct drm_i915_gem_object *obj); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c index 8d61d4538a64..1530d9f0bc81 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c @@ -950,6 +950,11 @@ static u64 i915_ttm_mmap_offset(struct drm_i915_gem_object *obj)  	return drm_vma_node_offset_addr(&obj->base.vma_node);  } +static void i915_ttm_unmap_virtual(struct drm_i915_gem_object *obj) +{ +	ttm_bo_unmap_virtual(i915_gem_to_ttm(obj)); +} +  static const struct drm_i915_gem_object_ops i915_gem_ttm_obj_ops = {  	.name = "i915_gem_object_ttm",  	.flags = I915_GEM_OBJECT_IS_SHRINKABLE | @@ -965,6 +970,7 @@ static const struct drm_i915_gem_object_ops i915_gem_ttm_obj_ops = {  	.migrate = i915_ttm_migrate,  	.mmap_offset = i915_ttm_mmap_offset, +	.unmap_virtual = i915_ttm_unmap_virtual,  	.mmap_ops = &vm_ops_ttm,  }; diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c index 743e6ab2c40b..c6291429b00c 100644 --- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c +++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c @@ -1368,20 +1368,10 @@ static int __igt_mmap_revoke(struct drm_i915_private *i915,  		}  	} -	if (!obj->ops->mmap_ops) { -		err = check_absent(addr, obj->base.size); -		if (err) { -			pr_err("%s: was not absent\n", obj->mm.region->name); -			goto out_unmap; -		} -	} else { -		/* ttm allows access to evicted regions by design */ - -		err = check_present(addr, obj->base.size); -		if (err) { -			pr_err("%s: was not present\n", obj->mm.region->name); -			goto out_unmap; -		} +	err = check_absent(addr, obj->base.size); +	if (err) { +		pr_err("%s: was not absent\n", obj->mm.region->name); +		goto out_unmap;  	}  out_unmap: |