From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> When a partial ggtt vma gets evicted, we need to zap any CPU mapping to said vma as well. Currently we zap the mappings only when the normal gtt vma gets evicted, but for partial vmas we leave behind stale CPU mappins. And so, if something else gets bound into the same gtt address range, any userspace access into the relevant virtual addresses will go astray. I didn't find anything really suitable in the mm code to zap just the needed mappings (we'd need to know the right CPU side mm and vma etc.), so let's just call i915_gem_release_mmap() for now. Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxxxxxxx> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Testcase: igt/gem_mmap_gtt Fixes: c5ad54c ("drm/i915: Use partial view in mmap fault handler") Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/i915_gem.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 66b170598ae6..c29b929f796c 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -3264,6 +3264,9 @@ static int __i915_vma_unbind(struct i915_vma *vma, bool wait) ret = i915_gem_object_put_fence(obj); if (ret) return ret; + } else if (i915_is_ggtt(vma->vm) && + vma->ggtt_view.type == I915_GGTT_VIEW_PARTIAL) { + i915_gem_release_mmap(obj); } trace_i915_vma_unbind(vma); -- 2.4.10 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx