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: Michel Thierry <michel.thierry@intel.com> Signed-off-by: Chris 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.uk Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
This commit is contained in:
parent
695eaa3b60
commit
6b764a594f
|
@ -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)
|
||||||
|
|
||||||
/* 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue