提交 56c62f52 编写于 作者: J James Clark 提交者: Arnaldo Carvalho de Melo

perf cs-etm: Print the decoder name

Use the real name of the decoder instead of hard-coding "ETM" to avoid
confusion when the trace is ETE. This also now distinguishes between
ETMv3 and ETMv4.
Reviewed-by: NLeo Yan <leo.yan@linaro.org>
Reviewed-by: NSuzuki Poulouse <suzuki.poulose@arm.com>
Signed-off-by: NJames Clark <james.clark@arm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: John Garry <john.garry@huawei.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Will Deacon <will@kernel.org>
Cc: coresight@lists.linaro.org
Cc: linux-arm-kernel@lists.infradead.org
Link: https //lore.kernel.org/r/20210806134109.1182235-9-james.clark@arm.com
Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 779f414a
...@@ -37,6 +37,7 @@ struct cs_etm_decoder { ...@@ -37,6 +37,7 @@ struct cs_etm_decoder {
dcd_tree_handle_t dcd_tree; dcd_tree_handle_t dcd_tree;
cs_etm_mem_cb_type mem_access; cs_etm_mem_cb_type mem_access;
ocsd_datapath_resp_t prev_return; ocsd_datapath_resp_t prev_return;
const char *decoder_name;
}; };
static u32 static u32
...@@ -615,7 +616,6 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params, ...@@ -615,7 +616,6 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params,
struct cs_etm_trace_params *t_params, struct cs_etm_trace_params *t_params,
struct cs_etm_decoder *decoder) struct cs_etm_decoder *decoder)
{ {
const char *decoder_name;
ocsd_etmv3_cfg config_etmv3; ocsd_etmv3_cfg config_etmv3;
ocsd_etmv4_cfg trace_config_etmv4; ocsd_etmv4_cfg trace_config_etmv4;
ocsd_ete_cfg trace_config_ete; ocsd_ete_cfg trace_config_ete;
...@@ -626,19 +626,19 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params, ...@@ -626,19 +626,19 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params,
case CS_ETM_PROTO_ETMV3: case CS_ETM_PROTO_ETMV3:
case CS_ETM_PROTO_PTM: case CS_ETM_PROTO_PTM:
cs_etm_decoder__gen_etmv3_config(t_params, &config_etmv3); cs_etm_decoder__gen_etmv3_config(t_params, &config_etmv3);
decoder_name = (t_params->protocol == CS_ETM_PROTO_ETMV3) ? decoder->decoder_name = (t_params->protocol == CS_ETM_PROTO_ETMV3) ?
OCSD_BUILTIN_DCD_ETMV3 : OCSD_BUILTIN_DCD_ETMV3 :
OCSD_BUILTIN_DCD_PTM; OCSD_BUILTIN_DCD_PTM;
trace_config = &config_etmv3; trace_config = &config_etmv3;
break; break;
case CS_ETM_PROTO_ETMV4i: case CS_ETM_PROTO_ETMV4i:
cs_etm_decoder__gen_etmv4_config(t_params, &trace_config_etmv4); cs_etm_decoder__gen_etmv4_config(t_params, &trace_config_etmv4);
decoder_name = OCSD_BUILTIN_DCD_ETMV4I; decoder->decoder_name = OCSD_BUILTIN_DCD_ETMV4I;
trace_config = &trace_config_etmv4; trace_config = &trace_config_etmv4;
break; break;
case CS_ETM_PROTO_ETE: case CS_ETM_PROTO_ETE:
cs_etm_decoder__gen_ete_config(t_params, &trace_config_ete); cs_etm_decoder__gen_ete_config(t_params, &trace_config_ete);
decoder_name = OCSD_BUILTIN_DCD_ETE; decoder->decoder_name = OCSD_BUILTIN_DCD_ETE;
trace_config = &trace_config_ete; trace_config = &trace_config_ete;
break; break;
default: default:
...@@ -647,7 +647,7 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params, ...@@ -647,7 +647,7 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params,
if (d_params->operation == CS_ETM_OPERATION_DECODE) { if (d_params->operation == CS_ETM_OPERATION_DECODE) {
if (ocsd_dt_create_decoder(decoder->dcd_tree, if (ocsd_dt_create_decoder(decoder->dcd_tree,
decoder_name, decoder->decoder_name,
OCSD_CREATE_FLG_FULL_DECODER, OCSD_CREATE_FLG_FULL_DECODER,
trace_config, &csid)) trace_config, &csid))
return -1; return -1;
...@@ -659,7 +659,7 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params, ...@@ -659,7 +659,7 @@ cs_etm_decoder__create_etm_decoder(struct cs_etm_decoder_params *d_params,
return 0; return 0;
} else if (d_params->operation == CS_ETM_OPERATION_PRINT) { } else if (d_params->operation == CS_ETM_OPERATION_PRINT) {
if (ocsd_dt_create_decoder(decoder->dcd_tree, decoder_name, if (ocsd_dt_create_decoder(decoder->dcd_tree, decoder->decoder_name,
OCSD_CREATE_FLG_PACKET_PROC, OCSD_CREATE_FLG_PACKET_PROC,
trace_config, &csid)) trace_config, &csid))
return -1; return -1;
...@@ -791,3 +791,8 @@ void cs_etm_decoder__free(struct cs_etm_decoder *decoder) ...@@ -791,3 +791,8 @@ void cs_etm_decoder__free(struct cs_etm_decoder *decoder)
decoder->dcd_tree = NULL; decoder->dcd_tree = NULL;
free(decoder); free(decoder);
} }
const char *cs_etm_decoder__get_name(struct cs_etm_decoder *decoder)
{
return decoder->decoder_name;
}
...@@ -104,5 +104,6 @@ int cs_etm_decoder__get_packet(struct cs_etm_packet_queue *packet_queue, ...@@ -104,5 +104,6 @@ int cs_etm_decoder__get_packet(struct cs_etm_packet_queue *packet_queue,
struct cs_etm_packet *packet); struct cs_etm_packet *packet);
int cs_etm_decoder__reset(struct cs_etm_decoder *decoder); int cs_etm_decoder__reset(struct cs_etm_decoder *decoder);
const char *cs_etm_decoder__get_name(struct cs_etm_decoder *decoder);
#endif /* INCLUDE__CS_ETM_DECODER_H__ */ #endif /* INCLUDE__CS_ETM_DECODER_H__ */
...@@ -537,8 +537,8 @@ static void cs_etm__dump_event(struct cs_etm_queue *etmq, ...@@ -537,8 +537,8 @@ static void cs_etm__dump_event(struct cs_etm_queue *etmq,
fprintf(stdout, "\n"); fprintf(stdout, "\n");
color_fprintf(stdout, color, color_fprintf(stdout, color,
". ... CoreSight ETM Trace data: size %zu bytes\n", ". ... CoreSight %s Trace data: size %zu bytes\n",
buffer->size); cs_etm_decoder__get_name(etmq->decoder), buffer->size);
do { do {
size_t consumed; size_t consumed;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册