Mesa (staging/20.2): freedreno/crashdec: handle section name typos
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Aug 11 16:44:12 UTC 2020
Module: Mesa
Branch: staging/20.2
Commit: e196f50d76beeca3bf6e0d86d1074c0086aee050
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e196f50d76beeca3bf6e0d86d1074c0086aee050
Author: Rob Clark <robdclark at chromium.org>
Date: Sat Aug 8 09:50:08 2020 -0700
freedreno/crashdec: handle section name typos
The fixes tag isn't so much because it was incorrect before, but because
I'm going to send a kernel patch to fix the typo, and that will break
old crashdec.
Fixes: 1ea4ef0d3be ("freedreno: slurp in decode tools")
Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6242>
(cherry picked from commit cbfce486f2cea8ace3bda5d2d93d28952ad2944d)
---
.pick_status.json | 2 +-
src/freedreno/.gitlab-ci/reference/crash.log | 2 +-
src/freedreno/decode/crashdec.c | 33 +++++++++++++++++++++++-----
3 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/.pick_status.json b/.pick_status.json
index f05868f5feb..00942914ed7 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -103,7 +103,7 @@
"description": "freedreno/crashdec: handle section name typos",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": "1ea4ef0d3be829e392922f5d26fbc89bf69a8a67"
},
diff --git a/src/freedreno/.gitlab-ci/reference/crash.log b/src/freedreno/.gitlab-ci/reference/crash.log
index 4cbc4e42bed..e0c20435ae7 100644
--- a/src/freedreno/.gitlab-ci/reference/crash.log
+++ b/src/freedreno/.gitlab-ci/reference/crash.log
@@ -2452,7 +2452,7 @@ registers-gmu:
00000000 0x12b: 00000000
00000000 0x140: 00000000
indexed-registers:
- - regs-name: CP_SEQ_STAT
+ - regs-name: CP_SQE_STAT
dwords: 51
PC: 00c5
$01: deadd00d $11: 00000000
diff --git a/src/freedreno/decode/crashdec.c b/src/freedreno/decode/crashdec.c
index 8c5ccb562c7..933da0ddec0 100644
--- a/src/freedreno/decode/crashdec.c
+++ b/src/freedreno/decode/crashdec.c
@@ -101,6 +101,23 @@ regval(const char *name)
* Line reading and string helpers:
*/
+static char *
+replacestr(char *line, const char *find, const char *replace)
+{
+ char *tail, *s;
+
+ if (!(s = strstr(line, find)))
+ return line;
+
+ tail = s + strlen(find);
+
+ char *newline;
+ asprintf(&newline, "%.*s%s%s", (int)(s - line), line, replace, tail);
+ free(line);
+
+ return newline;
+}
+
static char *lastline;
static char *pushedline;
@@ -120,6 +137,10 @@ popline(void)
if (getline(&r, &n, in) < 0)
exit(0);
+ /* Handle section name typo's from earlier kernels: */
+ r = replacestr(r, "CP_MEMPOOOL", "CP_MEMPOOL");
+ r = replacestr(r, "CP_SEQ_STAT", "CP_SQE_STAT");
+
lastline = r;
return r;
}
@@ -471,7 +492,7 @@ decode_clusters(void)
*/
static void
-dump_cp_seq_stat(uint32_t *stat)
+dump_cp_sqe_stat(uint32_t *stat)
{
printf("\t PC: %04x\n", stat[0]);
stat++;
@@ -850,23 +871,23 @@ decode_indexed_registers(void)
* so far) not useful, so skip them if not in verbose mode:
*/
bool dump = verbose ||
- !strcmp(name, "CP_SEQ_STAT") ||
+ !strcmp(name, "CP_SQE_STAT") ||
!strcmp(name, "CP_DRAW_STATE") ||
!strcmp(name, "CP_ROQ") ||
0;
- if (!strcmp(name, "CP_SEQ_STAT"))
- dump_cp_seq_stat(buf);
+ if (!strcmp(name, "CP_SQE_STAT"))
+ dump_cp_sqe_stat(buf);
if (!strcmp(name, "CP_UCODE_DBG_DATA"))
dump_cp_ucode_dbg(buf);
- /* note that name was typo'd in earlier kernels: */
- if (!strcmp(name, "CP_MEMPOOL") || !strcmp(name, "CP_MEMPOOOL"))
+ if (!strcmp(name, "CP_MEMPOOL"))
dump_cp_mem_pool(buf);
if (dump)
dump_hex_ascii(buf, 4 * sizedwords, 1);
+
free(buf);
continue;
More information about the mesa-commit
mailing list