Skip to content

Commit

Permalink
drm/i915/selftests: Include the trace as a debug aide
Browse files Browse the repository at this point in the history
If we fail to reset the GPU in a timely fashion, dump the GEM trace so
that we can see what operations were in flight when the GPU got stuck.

v2: There's more than one timeout that deserves tracing!
v3: Silence checkpatch by not even using a product at all!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Jeff McGee <jeff.mcgee@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180322074908.10838-1-chris@chris-wilson.co.uk
  • Loading branch information
Chris Wilson committed Mar 22, 2018
1 parent 4ccfee9 commit 0ade439
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions drivers/gpu/drm/i915/selftests/intel_hangcheck.c
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,11 @@ static void wedge_me(struct work_struct *work)
{
struct wedge_me *w = container_of(work, typeof(*w), work.work);

pr_err("%pS timed out, cancelling all further testing.\n",
w->symbol);
pr_err("%pS timed out, cancelling all further testing.\n", w->symbol);

GEM_TRACE("%pS timed out.\n", w->symbol);
GEM_TRACE_DUMP();

i915_gem_set_wedged(w->i915);
}

Expand Down Expand Up @@ -621,9 +624,19 @@ static int active_engine(void *data)
mutex_unlock(&engine->i915->drm.struct_mutex);

if (old) {
i915_request_wait(old, 0, MAX_SCHEDULE_TIMEOUT);
if (i915_request_wait(old, 0, HZ) < 0) {
GEM_TRACE("%s timed out.\n", engine->name);
GEM_TRACE_DUMP();

i915_gem_set_wedged(engine->i915);
i915_request_put(old);
err = -EIO;
break;
}
i915_request_put(old);
}

cond_resched();
}

for (count = 0; count < ARRAY_SIZE(rq); count++)
Expand Down Expand Up @@ -1126,6 +1139,10 @@ int intel_hangcheck_live_selftests(struct drm_i915_private *i915)

err = i915_subtests(tests, i915);

mutex_lock(&i915->drm.struct_mutex);
flush_test(i915, I915_WAIT_LOCKED);
mutex_unlock(&i915->drm.struct_mutex);

i915_modparams.enable_hangcheck = saved_hangcheck;
intel_runtime_pm_put(i915);

Expand Down

0 comments on commit 0ade439

Please sign in to comment.