Not only does it make for good documentation and debugging aide, but it is also vital for when we want to unwind requests - such as when throwing away an incomplete request. v2: Rebase Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/i915_gem.c | 13 ++++++++---- drivers/gpu/drm/i915/i915_gem_context.c | 9 +-------- drivers/gpu/drm/i915/intel_lrc.c | 35 --------------------------------- drivers/gpu/drm/i915/intel_lrc.h | 2 -- 4 files changed, 10 insertions(+), 49 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index d9b5bf4f1f21..e9f2d2b102de 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2462,7 +2462,6 @@ int __i915_add_request(struct intel_engine_cs *ring, struct drm_i915_private *dev_priv = ring->dev->dev_private; struct drm_i915_gem_request *request; struct intel_ringbuffer *ringbuf; - u32 request_start; int ret; request = ring->outstanding_lazy_request; @@ -2477,7 +2476,6 @@ int __i915_add_request(struct intel_engine_cs *ring, } else ringbuf = ring->buffer; - request_start = intel_ring_get_tail(ringbuf); /* * Emit any outstanding flushes - execbuf can fail to emit the flush * after having emitted the batchbuffer command. Hence we need to fix @@ -2505,7 +2503,6 @@ int __i915_add_request(struct intel_engine_cs *ring, return ret; } - request->head = request_start; request->tail = intel_ring_get_tail(ringbuf); /* Whilst this request exists, batch_obj will be on the @@ -2652,6 +2649,7 @@ int i915_gem_request_alloc(struct intel_engine_cs *ring, return ret; } + rq->head = intel_ring_get_tail(rq->ringbuf); ring->outstanding_lazy_request = rq; return 0; } @@ -2736,7 +2734,14 @@ static void i915_gem_reset_ring_cleanup(struct drm_i915_private *dev_priv, } /* This may not have been flushed before the reset, so clean it now */ - i915_gem_request_assign(&ring->outstanding_lazy_request, NULL); + if (ring->outstanding_lazy_request) { + struct drm_i915_gem_request *request; + + request = ring->outstanding_lazy_request; + request->ringbuf->tail = request->head; + + i915_gem_request_assign(&ring->outstanding_lazy_request, NULL); + } } void i915_gem_restore_fences(struct drm_device *dev) diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c index b9c6b0ad1d0f..43e58249235b 100644 --- a/drivers/gpu/drm/i915/i915_gem_context.c +++ b/drivers/gpu/drm/i915/i915_gem_context.c @@ -298,15 +298,8 @@ void i915_gem_context_reset(struct drm_device *dev) struct drm_i915_private *dev_priv = dev->dev_private; int i; - if (i915.enable_execlists) { - struct intel_context *ctx; - - list_for_each_entry(ctx, &dev_priv->context_list, link) { - intel_lr_context_reset(dev, ctx); - } - + if (i915.enable_execlists) return; - } for (i = 0; i < I915_NUM_RINGS; i++) { struct intel_engine_cs *ring = &dev_priv->ring[i]; diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index b3ca88ff88eb..459a27a2b486 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c @@ -1804,38 +1804,3 @@ error_unpin_ctx: drm_gem_object_unreference(&ctx_obj->base); return ret; } - -void intel_lr_context_reset(struct drm_device *dev, - struct intel_context *ctx) -{ - struct drm_i915_private *dev_priv = dev->dev_private; - struct intel_engine_cs *ring; - int i; - - for_each_ring(ring, dev_priv, i) { - struct drm_i915_gem_object *ctx_obj = - ctx->engine[ring->id].state; - struct intel_ringbuffer *ringbuf = - ctx->engine[ring->id].ringbuf; - uint32_t *reg_state; - struct page *page; - - if (!ctx_obj) - continue; - - if (i915_gem_object_get_pages(ctx_obj)) { - WARN(1, "Failed get_pages for context obj\n"); - continue; - } - page = i915_gem_object_get_page(ctx_obj, 1); - reg_state = kmap_atomic(page); - - reg_state[CTX_RING_HEAD+1] = 0; - reg_state[CTX_RING_TAIL+1] = 0; - - kunmap_atomic(reg_state); - - ringbuf->head = 0; - ringbuf->tail = 0; - } -} diff --git a/drivers/gpu/drm/i915/intel_lrc.h b/drivers/gpu/drm/i915/intel_lrc.h index 16c717672020..1aafb99cfff4 100644 --- a/drivers/gpu/drm/i915/intel_lrc.h +++ b/drivers/gpu/drm/i915/intel_lrc.h @@ -70,8 +70,6 @@ static inline void intel_logical_ring_emit(struct intel_ringbuffer *ringbuf, void intel_lr_context_free(struct intel_context *ctx); int intel_lr_context_deferred_create(struct intel_context *ctx, struct intel_engine_cs *ring); -void intel_lr_context_reset(struct drm_device *dev, - struct intel_context *ctx); /* Execlists */ int intel_sanitize_enable_execlists(struct drm_device *dev, int enable_execlists); -- 2.1.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx