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

Commit 629820fc authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Show GEM_TRACE when detecting a failed GPU idle



If we timeout waiting for the GPU to idle, something went seriously
wrong. We currently dump the engine state, but we can also dump the
ftrace buffer showing our last operations (when available).

In passing, note that since commit 559e040f ("drm/i915: Show the GPU
state when declaring wedged", we now show the engine state twice, once
in detecting the failed idle and then again on declaring wedged.

v2: ftrace_dump() takes a parameter specifying whether to dump all cpu
buffers or the local cpu's.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180309101114.1138-1-chris@chris-wilson.co.uk
parent a8ada068
Loading
Loading
Loading
Loading
+1 −10
Original line number Diff line number Diff line
@@ -3672,16 +3672,7 @@ static int wait_for_engines(struct drm_i915_private *i915)
	if (wait_for(intel_engines_are_idle(i915), I915_IDLE_ENGINES_TIMEOUT)) {
		dev_err(i915->drm.dev,
			"Failed to idle engines, declaring wedged!\n");
		if (drm_debug & DRM_UT_DRIVER) {
			struct drm_printer p = drm_debug_printer(__func__);
			struct intel_engine_cs *engine;
			enum intel_engine_id id;

			for_each_engine(engine, i915, id)
				intel_engine_dump(engine, &p,
						  "%s\n", engine->name);
		}

		GEM_TRACE_DUMP();
		i915_gem_set_wedged(i915);
		return -EIO;
	}
+2 −0
Original line number Diff line number Diff line
@@ -53,8 +53,10 @@

#if IS_ENABLED(CONFIG_DRM_I915_TRACE_GEM)
#define GEM_TRACE(...) trace_printk(__VA_ARGS__)
#define GEM_TRACE_DUMP() ftrace_dump(DUMP_ALL)
#else
#define GEM_TRACE(...) do { } while (0)
#define GEM_TRACE_DUMP() do { } while (0)
#endif

#define I915_NUM_ENGINES 8