From 782b419d524dc3a18725e1025658c634e01ad501 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 22 Nov 2012 13:07:20 +0000 Subject: [PATCH] --- yaml --- r: 345639 b: refs/heads/master c: b5d177946a30b097fbd1e5afa7c11acdeeb6bad8 h: refs/heads/master i: 345637: b3d4c61d1b0e1757fa8fc4d9dad0d5b49226be72 345635: ce0718d9b892a9b08d90b7eea3d9893a5fbdb43b 345631: bb62c21321dd8c2fad9b692efdae2257fe93798e v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/i915/i915_gem.c | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 302ac9d06dcc..df97aa81982b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4f1ba0f83a6d4abd055cf75af43954b38df8dcaf +refs/heads/master: b5d177946a30b097fbd1e5afa7c11acdeeb6bad8 diff --git a/trunk/drivers/gpu/drm/i915/i915_gem.c b/trunk/drivers/gpu/drm/i915/i915_gem.c index b0016bb65631..9be450e7c54f 100644 --- a/trunk/drivers/gpu/drm/i915/i915_gem.c +++ b/trunk/drivers/gpu/drm/i915/i915_gem.c @@ -2462,10 +2462,29 @@ i915_gem_object_unbind(struct drm_i915_gem_object *obj) static int i915_ring_idle(struct intel_ring_buffer *ring) { - if (list_empty(&ring->active_list)) + u32 seqno; + int ret; + + /* We need to add any requests required to flush the objects */ + if (!list_empty(&ring->active_list)) { + seqno = list_entry(ring->active_list.prev, + struct drm_i915_gem_object, + ring_list)->last_read_seqno; + + ret = i915_gem_check_olr(ring, seqno); + if (ret) + return ret; + } + + /* Wait upon the last request to be completed */ + if (list_empty(&ring->request_list)) return 0; - return i915_wait_seqno(ring, i915_gem_next_request_seqno(ring)); + seqno = list_entry(ring->request_list.prev, + struct drm_i915_gem_request, + list)->seqno; + + return i915_wait_seqno(ring, seqno); } int i915_gpu_idle(struct drm_device *dev)