From: Jordan Crouse <jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: [PATCH 10/13] drm/msm/adreno: Convert the show/crash file format
Date: Tue, 24 Jul 2018 10:33:28 -0600 [thread overview]
Message-ID: <20180724163331.18250-11-jcrouse@codeaurora.org> (raw)
In-Reply-To: <20180724163331.18250-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
Convert the format of the 'show' debugfs file and the crash
dump to a format resembling YAML. This should be easier to
parse and be more flexible for future changes and expansions.
v2: Use a standard .rst for the msm crashdump documentation
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
---
Documentation/gpu/msm-crash-dump.rst | 71 +++++++++++++++++++++++++
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 21 +++++---
2 files changed, 84 insertions(+), 8 deletions(-)
create mode 100644 Documentation/gpu/msm-crash-dump.rst
diff --git a/Documentation/gpu/msm-crash-dump.rst b/Documentation/gpu/msm-crash-dump.rst
new file mode 100644
index 000000000000..75ab1d541c03
--- /dev/null
+++ b/Documentation/gpu/msm-crash-dump.rst
@@ -0,0 +1,71 @@
+=====================
+MSM Crash Dump Format
+=====================
+
+Following a GPU hang the MSM driver outputs debugging information via
+/sys/kernel/dri/X/show or via devcoredump (/sys/class/devcoredump/dcdX/data).
+This document describes how the output is formatted.
+
+Each entry is in the form key: value. Sections headers will not have a value
+and all the contents of a section will be indented two spaces from the header.
+Each section might have multiple array entries the start of which is designated
+by a (-).
+
+Mappings
+--------
+
+kernel
+ The kernel version that generated the dump (UTS_RELEASE).
+
+module
+ The module that generated the crashdump.
+
+time
+ The kernel time at crash formated as seconds.microseconds.
+
+comm
+ Comm string for the binary that generated the fault.
+
+cmdline
+ Command line for the binary that generated the fault.
+
+revision
+ ID of the GPU that generated the crash formatted as
+ core.major.minor.patchlevel separated by dots.
+
+rbbm-status
+ The current value of RBBM_STATUS which shows what top level GPU
+ components are in use at the time of crash.
+
+ringbuffer
+ Section containing the contents of each ringbuffer. Each ringbuffer is
+ identified with an id number.
+
+ id
+ Ringbuffer ID (0 based index). Each ringbuffer in the section
+ will have its own unique id.
+ iova
+ GPU address of the ringbuffer.
+
+ last-fence
+ The last fence that was issued on the ringbuffer
+
+ retired-fence
+ The last fence retired on the ringbuffer.
+
+ rptr
+ The current read pointer (rptr) for the ringbuffer.
+
+ wptr
+ The current write pointer (wptr) for the ringbuffer.
+
+registers
+ Set of registers values. Each entry is on its own line enclosed
+ by brackets { }.
+
+ offset
+ Byte offset of the register from the start of the
+ GPU memory region.
+
+ value
+ Hexadecimal value of the register.
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index c72e3afc43a8..c7a998d9dc85 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -445,23 +445,28 @@ void adreno_show(struct msm_gpu *gpu, struct msm_gpu_state *state,
if (IS_ERR_OR_NULL(state))
return;
- drm_printf(p, "status: %08x\n", state->rbbm_status);
drm_printf(p, "revision: %d (%d.%d.%d.%d)\n",
adreno_gpu->info->revn, adreno_gpu->rev.core,
adreno_gpu->rev.major, adreno_gpu->rev.minor,
adreno_gpu->rev.patchid);
- for (i = 0; i < gpu->nr_rings; i++) {
- drm_printf(p, "rb %d: fence: %d/%d\n", i,
- state->ring[i].fence, state->ring[i].seqno);
+ drm_printf(p, "rbbm-status: 0x%08x\n", state->rbbm_status);
+
+ drm_puts(p, "ringbuffer:\n");
- drm_printf(p, " rptr: %d\n", state->ring[i].rptr);
- drm_printf(p, "rb wptr: %d\n", state->ring[i].wptr);
+ for (i = 0; i < gpu->nr_rings; i++) {
+ drm_printf(p, " - id: %d\n", i);
+ drm_printf(p, " iova: 0x%016llx\n", state->ring[i].iova);
+ drm_printf(p, " last-fence: %d\n", state->ring[i].seqno);
+ drm_printf(p, " retired-fence: %d\n", state->ring[i].fence);
+ drm_printf(p, " rptr: %d\n", state->ring[i].rptr);
+ drm_printf(p, " wptr: %d\n", state->ring[i].wptr);
}
- drm_printf(p, "IO:region %s 00000000 00020000\n", gpu->name);
+ drm_puts(p, "registers:\n");
+
for (i = 0; i < state->nr_registers; i++) {
- drm_printf(p, "IO:R %08x %08x\n",
+ drm_printf(p, " - { offset: 0x%04x, value: 0x%08x }\n",
state->registers[i * 2] << 2,
state->registers[(i * 2) + 1]);
}
--
2.18.0
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
next prev parent reply other threads:[~2018-07-24 16:33 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-24 16:33 [v8 PATCH 00/13] drm/msm: Capture and dump the GPU crash state Jordan Crouse
2018-07-24 16:33 ` [PATCH 01/13] include: Move ascii85 functions from i915 to linux/ascii85.h Jordan Crouse
[not found] ` <20180724163331.18250-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-24 16:33 ` [PATCH 02/13] drm: drm_printer: Add printer for devcoredump Jordan Crouse
2018-07-24 16:33 ` [PATCH 03/13] drm: Add drm_puts() to complement drm_printf() Jordan Crouse
2018-07-24 18:10 ` Emil Velikov
2018-07-24 16:33 ` [PATCH 04/13] drm: Add a -puts() function for the seq_file printer Jordan Crouse
2018-07-24 16:33 ` [PATCH 05/13] drm: Add puts callback for the coredump printer Jordan Crouse
2018-07-24 16:33 ` [PATCH 06/13] drm/msm/gpu: Capture the state of the GPU Jordan Crouse
2018-07-24 16:33 ` [PATCH 07/13] drm/msm/gpu: Convert the GPU show function to use the GPU state Jordan Crouse
2018-07-24 16:33 ` [PATCH 08/13] drm/msm/gpu: Rearrange the code that collects the task during a hang Jordan Crouse
2018-07-24 16:33 ` [PATCH 09/13] drm/msm/gpu: Capture the GPU state on a GPU hang Jordan Crouse
2018-07-24 16:33 ` Jordan Crouse [this message]
2018-07-24 16:33 ` [PATCH 11/13] drm/msm/adreno: Add ringbuffer data to the GPU state Jordan Crouse
2018-07-24 16:33 ` [PATCH 12/13] drm/msm/adreno: Add a5xx specific registers for " Jordan Crouse
2018-07-24 16:33 ` [PATCH 13/13] drm/msm/gpu: Add the buffer objects from the submit to the crash dump Jordan Crouse
-- strict thread matches above, loose matches on Subject: below --
2018-07-12 18:59 [v7 00/13] drm/msm: Capture and dump the GPU crash state Jordan Crouse
[not found] ` <20180712185930.2492-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 18:59 ` [PATCH 10/13] drm/msm/adreno: Convert the show/crash file format Jordan Crouse
2018-07-12 19:51 ` Daniel Vetter
2018-06-29 16:56 [v6 00/13] drm/msm: Capture and dump the GPU crash state Jordan Crouse
[not found] ` <20180629165641.1348-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-06-29 16:56 ` [PATCH 10/13] drm/msm/adreno: Convert the show/crash file format Jordan Crouse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180724163331.18250-11-jcrouse@codeaurora.org \
--to=jcrouse-sgv2jx0feol9jmxxk+q4oq@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.