aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gpu_error.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gpu_error.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gpu_error.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index b7e9fddef270..8bc76fcff70d 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -1194,6 +1194,7 @@ static void error_record_engine_registers(struct i915_gpu_state *error,
1194 switch (engine->id) { 1194 switch (engine->id) {
1195 default: 1195 default:
1196 MISSING_CASE(engine->id); 1196 MISSING_CASE(engine->id);
1197 /* fall through */
1197 case RCS0: 1198 case RCS0:
1198 mmio = RENDER_HWS_PGA_GEN7; 1199 mmio = RENDER_HWS_PGA_GEN7;
1199 break; 1200 break;
@@ -1417,6 +1418,7 @@ static void gem_record_rings(struct i915_gpu_state *error)
1417 struct intel_engine_cs *engine = i915->engine[i]; 1418 struct intel_engine_cs *engine = i915->engine[i];
1418 struct drm_i915_error_engine *ee = &error->engine[i]; 1419 struct drm_i915_error_engine *ee = &error->engine[i];
1419 struct i915_request *request; 1420 struct i915_request *request;
1421 unsigned long flags;
1420 1422
1421 ee->engine_id = -1; 1423 ee->engine_id = -1;
1422 1424
@@ -1428,10 +1430,11 @@ static void gem_record_rings(struct i915_gpu_state *error)
1428 error_record_engine_registers(error, engine, ee); 1430 error_record_engine_registers(error, engine, ee);
1429 error_record_engine_execlists(engine, ee); 1431 error_record_engine_execlists(engine, ee);
1430 1432
1433 spin_lock_irqsave(&engine->active.lock, flags);
1431 request = intel_engine_find_active_request(engine); 1434 request = intel_engine_find_active_request(engine);
1432 if (request) { 1435 if (request) {
1433 struct i915_gem_context *ctx = request->gem_context; 1436 struct i915_gem_context *ctx = request->gem_context;
1434 struct intel_ring *ring; 1437 struct intel_ring *ring = request->ring;
1435 1438
1436 ee->vm = ctx->vm ?: &ggtt->vm; 1439 ee->vm = ctx->vm ?: &ggtt->vm;
1437 1440
@@ -1461,7 +1464,6 @@ static void gem_record_rings(struct i915_gpu_state *error)
1461 ee->rq_post = request->postfix; 1464 ee->rq_post = request->postfix;
1462 ee->rq_tail = request->tail; 1465 ee->rq_tail = request->tail;
1463 1466
1464 ring = request->ring;
1465 ee->cpu_ring_head = ring->head; 1467 ee->cpu_ring_head = ring->head;
1466 ee->cpu_ring_tail = ring->tail; 1468 ee->cpu_ring_tail = ring->tail;
1467 ee->ringbuffer = 1469 ee->ringbuffer =
@@ -1469,6 +1471,7 @@ static void gem_record_rings(struct i915_gpu_state *error)
1469 1471
1470 engine_record_requests(engine, request, ee); 1472 engine_record_requests(engine, request, ee);
1471 } 1473 }
1474 spin_unlock_irqrestore(&engine->active.lock, flags);
1472 1475
1473 ee->hws_page = 1476 ee->hws_page =
1474 i915_error_object_create(i915, 1477 i915_error_object_create(i915,