Commit b97c3d9c authored by Keith Packard's avatar Keith Packard

drm/i915: i915_gem_object_finish_gtt must always release gtt mmap

Even if the object is no longer in the GTT domain, there may still be
a user space mapping which needs to be released.

Without this fix, render-based text (mostly in firefox) would
occasionally get corrupted when the system was under load.
Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
parent 2cd1176b
...@@ -2155,15 +2155,15 @@ static void i915_gem_object_finish_gtt(struct drm_i915_gem_object *obj) ...@@ -2155,15 +2155,15 @@ static void i915_gem_object_finish_gtt(struct drm_i915_gem_object *obj)
{ {
u32 old_write_domain, old_read_domains; u32 old_write_domain, old_read_domains;
if ((obj->base.read_domains & I915_GEM_DOMAIN_GTT) == 0)
return;
/* Act a barrier for all accesses through the GTT */ /* Act a barrier for all accesses through the GTT */
mb(); mb();
/* Force a pagefault for domain tracking on next user access */ /* Force a pagefault for domain tracking on next user access */
i915_gem_release_mmap(obj); i915_gem_release_mmap(obj);
if ((obj->base.read_domains & I915_GEM_DOMAIN_GTT) == 0)
return;
old_read_domains = obj->base.read_domains; old_read_domains = obj->base.read_domains;
old_write_domain = obj->base.write_domain; old_write_domain = obj->base.write_domain;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment