diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lrc.c | 29 |
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 | ||
| 1151 | static u32 port_seqno(struct execlist_port *port) | ||
| 1152 | { | ||
| 1153 | return port->request ? port->request->global_seqno : 0; | ||
| 1154 | } | ||
| 1155 | |||
| 1156 | static int gen8_init_common_ring(struct intel_engine_cs *engine) | 1151 | static 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 | ||
