Commit 6b764a59 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Report request restarts for both execlists/guc

As we now share the execlist_port[] tracking for both execlists/guc, we
can reset the inflight count on both and report which requests are being
restarted.
Suggested-by: default avatarMichel Thierry <michel.thierry@intel.com>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Michel Thierry <michel.thierry@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170425103835.31871-1-chris@chris-wilson.co.ukReviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
parent 695eaa3b
...@@ -1148,14 +1148,11 @@ static int intel_init_workaround_bb(struct intel_engine_cs *engine) ...@@ -1148,14 +1148,11 @@ static int intel_init_workaround_bb(struct intel_engine_cs *engine)
return ret; return ret;
} }
static u32 port_seqno(struct execlist_port *port)
{
return port->request ? port->request->global_seqno : 0;
}
static int gen8_init_common_ring(struct intel_engine_cs *engine) static int gen8_init_common_ring(struct intel_engine_cs *engine)
{ {
struct drm_i915_private *dev_priv = engine->i915; struct drm_i915_private *dev_priv = engine->i915;
struct execlist_port *port = engine->execlist_port;
unsigned int n;
int ret; int ret;
ret = intel_mocs_init_engine(engine); ret = intel_mocs_init_engine(engine);
...@@ -1176,16 +1173,22 @@ static int gen8_init_common_ring(struct intel_engine_cs *engine) ...@@ -1176,16 +1173,22 @@ static int gen8_init_common_ring(struct intel_engine_cs *engine)
/* After a GPU reset, we may have requests to replay */ /* After a GPU reset, we may have requests to replay */
clear_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted); clear_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted);
if (!i915.enable_guc_submission && !execlists_elsp_idle(engine)) {
DRM_DEBUG_DRIVER("Restarting %s from requests [0x%x, 0x%x]\n", for (n = 0; n < ARRAY_SIZE(engine->execlist_port); n++) {
engine->name, if (!port[n].request)
port_seqno(&engine->execlist_port[0]), break;
port_seqno(&engine->execlist_port[1]));
engine->execlist_port[0].count = 0; DRM_DEBUG_DRIVER("Restarting %s:%d from 0x%x\n",
engine->execlist_port[1].count = 0; engine->name, n,
execlists_submit_ports(engine); port[n].request->global_seqno);
/* Discard the current inflight count */
port[n].count = 0;
} }
if (!i915.enable_guc_submission && !execlists_elsp_idle(engine))
execlists_submit_ports(engine);
return 0; return 0;
} }
......
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