Commit 022aa67b authored by James Clark's avatar James Clark Committed by Arnaldo Carvalho de Melo
Browse files

perf: cs-etm: Print queue number in raw trace dump



Now that we have overlapping trace IDs it's also useful to know what the
queue number is to be able to distinguish the source of the trace so
print it inline. Hide it behind the -v option because it might not be
obvious to users what the queue number is.

Reviewed-by: default avatarMike Leach <mike.leach@linaro.org>
Signed-off-by: default avatarJames Clark <james.clark@arm.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Ganapatrao Kulkarni <gankulkarni@os.amperecomputing.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.g.garry@oracle.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Leo Yan <leo.yan@linux.dev>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20240722101202.26915-8-james.clark@linaro.org


Signed-off-by: default avatarJames Clark <james.clark@linaro.org>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 1506af6d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ const u32 INSTR_PER_NS = 10;

struct cs_etm_decoder {
	void *data;
	void (*packet_printer)(const char *msg);
	void (*packet_printer)(const char *msg, void *data);
	bool suppress_printing;
	dcd_tree_handle_t dcd_tree;
	cs_etm_mem_cb_type mem_access;
@@ -202,7 +202,7 @@ static void cs_etm_decoder__print_str_cb(const void *p_context,
	const struct cs_etm_decoder *decoder = p_context;

	if (p_context && str_len && !decoder->suppress_printing)
		decoder->packet_printer(msg);
		decoder->packet_printer(msg, decoder->data);
}

static int
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ struct cs_etm_trace_params {

struct cs_etm_decoder_params {
	int operation;
	void (*packet_printer)(const char *msg);
	void (*packet_printer)(const char *msg, void *data);
	cs_etm_mem_cb_type mem_acc_cb;
	bool formatted;
	bool fsyncs;
+10 −3
Original line number Diff line number Diff line
@@ -762,15 +762,22 @@ static void cs_etm__packet_swap(struct cs_etm_auxtrace *etm,
	}
}

static void cs_etm__packet_dump(const char *pkt_string)
static void cs_etm__packet_dump(const char *pkt_string, void *data)
{
	const char *color = PERF_COLOR_BLUE;
	int len = strlen(pkt_string);
	struct cs_etm_queue *etmq = data;
	char queue_nr[64];

	if (verbose)
		snprintf(queue_nr, sizeof(queue_nr), "Qnr:%d; ", etmq->queue_nr);
	else
		queue_nr[0] = '\0';

	if (len && (pkt_string[len-1] == '\n'))
		color_fprintf(stdout, color, "	%s", pkt_string);
		color_fprintf(stdout, color, "	%s%s", queue_nr, pkt_string);
	else
		color_fprintf(stdout, color, "	%s\n", pkt_string);
		color_fprintf(stdout, color, "	%s%s\n", queue_nr, pkt_string);

	fflush(stdout);
}