mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-12 12:56:41 +07:00
drm/i915/execlists: Move clearing submission count from reset to init
After a GPU reset, we want to replay our queue of requests. However, the GPU reset clobbered the state and we only fixup the state for the guilty request - and engines deemed innocent we try to leave untouched so that we recover as completely as possible. However, we need to clear the sw tracking of the ELSP ports even for innocent requests, so move the clear to the common path of init_hw (from reset_hw). Reported-by: Mika Kuoppala <mika.kuoppala@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Mika Kuoppala <mika.kuoppala@intel.com> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20161004201132.21801-3-chris@chris-wilson.co.uk
This commit is contained in:
parent
a3aabe86a3
commit
c87d50cc9f
@ -1242,8 +1242,12 @@ static int gen8_init_common_ring(struct intel_engine_cs *engine)
|
||||
|
||||
intel_engine_init_hangcheck(engine);
|
||||
|
||||
if (!execlists_elsp_idle(engine))
|
||||
/* After a GPU reset, we may have requests to replay */
|
||||
if (!execlists_elsp_idle(engine)) {
|
||||
engine->execlist_port[0].count = 0;
|
||||
engine->execlist_port[1].count = 0;
|
||||
execlists_submit_ports(engine);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1318,10 +1322,7 @@ static void reset_common_ring(struct intel_engine_cs *engine,
|
||||
memset(&port[1], 0, sizeof(port[1]));
|
||||
}
|
||||
|
||||
/* CS is stopped, and we will resubmit both ports on resume */
|
||||
GEM_BUG_ON(request->ctx != port[0].request->ctx);
|
||||
port[0].count = 0;
|
||||
port[1].count = 0;
|
||||
|
||||
/* Reset WaIdleLiteRestore:bdw,skl as well */
|
||||
request->tail = request->wa_tail - WA_TAIL_DWORDS * sizeof(u32);
|
||||
|
Loading…
Reference in New Issue
Block a user