[PATCH 9/9] hexdump

Chris Wilson chris at chris-wilson.co.uk
Sun Sep 8 10:01:18 UTC 2019


---
 drivers/gpu/drm/i915/i915_gem.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 141024c66f36..0cb7e7cf72fe 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1237,6 +1237,34 @@ int i915_gem_init_hw(struct drm_i915_private *i915)
 	return ret;
 }
 
+static void hexdump(const void *buf, size_t len)
+{
+	const size_t rowsize = 8 * sizeof(u32);
+	const void *prev = NULL;
+	bool skip = false;
+	size_t pos;
+
+	for (pos = 0; pos < len; pos += rowsize) {
+		char line[128];
+
+		if (prev && !memcmp(prev, buf + pos, rowsize)) {
+			if (!skip) {
+				pr_info("*\n");
+				skip = true;
+			}
+			continue;
+		}
+
+		WARN_ON_ONCE(hex_dump_to_buffer(buf + pos, len - pos,
+						rowsize, sizeof(u32),
+						line, sizeof(line),
+						false) >= sizeof(line));
+		pr_info("[%04zx] %s\n", pos, line);
+
+		prev = buf + pos;
+		skip = false;
+	}
+}
 static int __intel_engines_record_defaults(struct drm_i915_private *i915)
 {
 	struct i915_request *requests[I915_NUM_ENGINES] = {};
@@ -1347,6 +1375,9 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915)
 			goto out;
 		}
 
+		pr_info("%s regs\n", rq->engine->name);
+		hexdump(vaddr + LRC_STATE_PN * PAGE_SIZE, PAGE_SIZE);
+
 		rq->engine->default_state = i915_gem_object_get(state->obj);
 		i915_gem_object_unpin_map(state->obj);
 	}
-- 
2.23.0



More information about the Intel-gfx-trybot mailing list