freedreno/crashdec: Sanitize index-regs section names
Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36426>
This commit is contained in:
parent
d8840db682
commit
08b9d771e3
1 changed files with 33 additions and 4 deletions
|
|
@ -723,6 +723,25 @@ dump_cp_ucode_dbg(uint32_t *dbg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const static struct {
|
||||||
|
const char *from;
|
||||||
|
const char *to;
|
||||||
|
} index_reg_renames[] = {
|
||||||
|
{"CP_ROQ", "CP_ROQ_DBG"},
|
||||||
|
{"CP_UCODE_DBG_DATA", "CP_SQE_UCODE_DBG"},
|
||||||
|
{"CP_RESOURCE_TBL", "CP_RESOURCE_TABLE_DBG"},
|
||||||
|
{"CP_LPAC_ROQ", "CP_LPAC_ROQ_DBG"},
|
||||||
|
{"CP_BV_DRAW_STATE_ADDR", "CP_BV_DRAW_STATE"},
|
||||||
|
{"CP_BV_ROQ_DBG_ADDR", "CP_BV_ROQ_DBG"},
|
||||||
|
{"CP_BV_SQE_UCODE_DBG_ADDR", "CP_BV_SQE_UCODE_DBG"},
|
||||||
|
{"CP_LPAC_DRAW_STATE_ADDR", "CP_LPAC_DRAW_STATE"},
|
||||||
|
{"CP_SQE_AC_UCODE_DBG_ADDR", "CP_SQE_AC_UCODE_DBG"},
|
||||||
|
{"CP_SQE_AC_STAT_ADDR", "CP_SQE_AC_STAT"},
|
||||||
|
{"CP_LPAC_FIFO_DBG_ADDR", "CP_LPAC_FIFO_DBG"},
|
||||||
|
{"CP_MEMPOOL", "CP_MEM_POOL_DBG"},
|
||||||
|
{"CP_BV_MEMPOOL", "CP_BV_MEM_POOL_DBG"},
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
decode_indexed_registers(void)
|
decode_indexed_registers(void)
|
||||||
{
|
{
|
||||||
|
|
@ -733,6 +752,16 @@ decode_indexed_registers(void)
|
||||||
if (startswith(line, " - regs-name:")) {
|
if (startswith(line, " - regs-name:")) {
|
||||||
free(name);
|
free(name);
|
||||||
parseline(line, " - regs-name: %ms", &name);
|
parseline(line, " - regs-name: %ms", &name);
|
||||||
|
|
||||||
|
/* kernel is inconsitent, sometimes the name ends in _DATA or _ADDR,
|
||||||
|
* or various other renaming:
|
||||||
|
*/
|
||||||
|
for (int i = 0; i < ARRAY_SIZE(index_reg_renames); i++) {
|
||||||
|
if (!strcmp(name, index_reg_renames[i].from)) {
|
||||||
|
free(name);
|
||||||
|
name = strdup(index_reg_renames[i].to);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (startswith(line, " dwords:")) {
|
} else if (startswith(line, " dwords:")) {
|
||||||
parseline(line, " dwords: %u", &sizedwords);
|
parseline(line, " dwords: %u", &sizedwords);
|
||||||
} else if (startswith(line, " data: !!ascii85 |")) {
|
} else if (startswith(line, " data: !!ascii85 |")) {
|
||||||
|
|
@ -744,13 +773,13 @@ decode_indexed_registers(void)
|
||||||
bool dump = verbose || !strcmp(name, "CP_SQE_STAT") ||
|
bool dump = verbose || !strcmp(name, "CP_SQE_STAT") ||
|
||||||
!strcmp(name, "CP_BV_SQE_STAT") ||
|
!strcmp(name, "CP_BV_SQE_STAT") ||
|
||||||
!strcmp(name, "CP_DRAW_STATE") ||
|
!strcmp(name, "CP_DRAW_STATE") ||
|
||||||
!strcmp(name, "CP_ROQ") || 0;
|
!strcmp(name, "CP_ROQ_DBG") || 0;
|
||||||
|
|
||||||
if (!strcmp(name, "CP_SQE_STAT") || !strcmp(name, "CP_BV_SQE_STAT"))
|
if (!strcmp(name, "CP_SQE_STAT") || !strcmp(name, "CP_BV_SQE_STAT"))
|
||||||
dump_cp_sqe_stat(buf);
|
dump_cp_sqe_stat(buf);
|
||||||
|
|
||||||
if (!strcmp(name, "CP_UCODE_DBG_DATA") ||
|
if (!strcmp(name, "CP_UCODE_DBG") ||
|
||||||
!strcmp(name, "CP_BV_SQE_UCODE_DBG_ADDR"))
|
!strcmp(name, "CP_BV_SQE_UCODE_DBG"))
|
||||||
dump_cp_ucode_dbg(buf);
|
dump_cp_ucode_dbg(buf);
|
||||||
|
|
||||||
if (!strcmp(name, "CP_MEMPOOL"))
|
if (!strcmp(name, "CP_MEMPOOL"))
|
||||||
|
|
@ -791,7 +820,7 @@ decode_shader_blocks(void)
|
||||||
* so far) not useful, so skip them if not in verbose mode:
|
* so far) not useful, so skip them if not in verbose mode:
|
||||||
*/
|
*/
|
||||||
bool dump = verbose || !strcmp(type, "A6XX_SP_INST_DATA") ||
|
bool dump = verbose || !strcmp(type, "A6XX_SP_INST_DATA") ||
|
||||||
!strcmp(type, "A6XX_HLSQ_INST_RAM") ||
|
!strcmp(type, "A6XX_HLSQ_INST_RAM") ||
|
||||||
!strcmp(type, "A7XX_SP_INST_DATA") ||
|
!strcmp(type, "A7XX_SP_INST_DATA") ||
|
||||||
!strcmp(type, "A7XX_HLSQ_INST_RAM") || 0;
|
!strcmp(type, "A7XX_HLSQ_INST_RAM") || 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue