Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ade4390 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915/selftests: Include the trace as a debug aide



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: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: default avatarJeff McGee <jeff.mcgee@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180322074908.10838-1-chris@chris-wilson.co.uk
parent 4ccfee92
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -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);
}

@@ -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++)
@@ -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);