aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/intel_lrc.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 7df278fe492e..7a5f164c664a 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1148,14 +1148,11 @@ static int intel_init_workaround_bb(struct intel_engine_cs *engine)
1148 return ret; 1148 return ret;
1149} 1149}
1150 1150
1151static u32 port_seqno(struct execlist_port *port)
1152{
1153 return port->request ? port->request->global_seqno : 0;
1154}
1155
1156static int gen8_init_common_ring(struct intel_engine_cs *engine) 1151static int gen8_init_common_ring(struct intel_engine_cs *engine)
1157{ 1152{
1158 struct drm_i915_private *dev_priv = engine->i915; 1153 struct drm_i915_private *dev_priv = engine->i915;
1154 struct execlist_port *port = engine->execlist_port;
1155 unsigned int n;
1159 int ret; 1156 int ret;
1160 1157
1161 ret = intel_mocs_init_engine(engine); 1158 ret = intel_mocs_init_engine(engine);
@@ -1176,16 +1173,22 @@ static int gen8_init_common_ring(struct intel_engine_cs *engine)
1176 1173
1177 /* After a GPU reset, we may have requests to replay */ 1174 /* After a GPU reset, we may have requests to replay */
1178 clear_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted); 1175 clear_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted);
1179 if (!i915.enable_guc_submission && !execlists_elsp_idle(engine)) { 1176
1180 DRM_DEBUG_DRIVER("Restarting %s from requests [0x%x, 0x%x]\n", 1177 for (n = 0; n < ARRAY_SIZE(engine->execlist_port); n++) {
1181 engine->name, 1178 if (!port[n].request)
1182 port_seqno(&engine->execlist_port[0]), 1179 break;
1183 port_seqno(&engine->execlist_port[1])); 1180
1184 engine->execlist_port[0].count = 0; 1181 DRM_DEBUG_DRIVER("Restarting %s:%d from 0x%x\n",
1185 engine->execlist_port[1].count = 0; 1182 engine->name, n,
1186 execlists_submit_ports(engine); 1183 port[n].request->global_seqno);
1184
1185 /* Discard the current inflight count */
1186 port[n].count = 0;
1187 } 1187 }
1188 1188
1189 if (!i915.enable_guc_submission && !execlists_elsp_idle(engine))
1190 execlists_submit_ports(engine);
1191
1189 return 0; 1192 return 0;
1190} 1193}
1191 1194