diff options
author | Keith Packard <keithp@keithp.com> | 2011-06-24 21:02:59 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2011-06-24 21:02:59 -0700 |
commit | b97c3d9c1655522be3adc5ae1aa153a18467e924 (patch) | |
tree | e177fb47db75b19071cbfd24aaec018b8282e49c /drivers/gpu/drm/i915/i915_gem.c | |
parent | 2cd1176bd9e92924242e779dcc5c8fc922f96659 (diff) |
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: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index b29e0f2b780..6026817372d 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2155,15 +2155,15 @@ static void i915_gem_object_finish_gtt(struct drm_i915_gem_object *obj) { 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 */ mb(); /* Force a pagefault for domain tracking on next user access */ i915_gem_release_mmap(obj); + if ((obj->base.read_domains & I915_GEM_DOMAIN_GTT) == 0) + return; + old_read_domains = obj->base.read_domains; old_write_domain = obj->base.write_domain; |