From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue, 7 Dec 2010 23:00:20 +0000 (+0000)
Subject: Merge branch 'drm-intel-fixes' into drm-intel-next
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=1a1c69762a14f50dd574a9cbabbfa1b1542f580e;p=linux.git

Merge branch 'drm-intel-fixes' into drm-intel-next

Conflicts:
	drivers/gpu/drm/i915/i915_gem.c
	drivers/gpu/drm/i915/intel_dp.c
---

1a1c69762a14f50dd574a9cbabbfa1b1542f580e
diff --cc drivers/gpu/drm/i915/i915_gem.c
index b57ce033e42a1,275ec6ed43ae7..27fa2a1b26a56
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@@ -3356,9 -4374,20 +3356,24 @@@ i915_gem_busy_ioctl(struct drm_device *
  		 * use this buffer rather sooner than later, so issuing the required
  		 * flush earlier is beneficial.
  		 */
- 		if (obj->base.write_domain & I915_GEM_GPU_DOMAINS)
 -		if (obj->write_domain & I915_GEM_GPU_DOMAINS) {
 -			i915_gem_flush_ring(dev, file_priv,
 -					    obj_priv->ring,
 -					    0, obj->write_domain);
 -		} else if (obj_priv->ring->outstanding_lazy_request) {
++		if (obj->base.write_domain & I915_GEM_GPU_DOMAINS) {
 +			i915_gem_flush_ring(dev, obj->ring,
 +					    0, obj->base.write_domain);
++		} else if (obj->ring->outstanding_lazy_request ==
++			   obj->last_rendering_seqno) {
++			struct drm_i915_gem_request *request;
++
+ 			/* This ring is not being cleared by active usage,
+ 			 * so emit a request to do so.
+ 			 */
 -			u32 seqno = i915_add_request(dev,
 -						     NULL, NULL,
 -						     obj_priv->ring);
 -			if (seqno == 0)
++			request = kzalloc(sizeof(*request), GFP_KERNEL);
++			if (request)
++				ret = i915_add_request(dev,
++						       NULL, request,
++						       obj->ring);
++			else
+ 				ret = -ENOMEM;
+ 		}
  
  		/* Update the active list for the hardware's current position.
  		 * Otherwise this only updates on a delayed timer or when irqs