linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: Clark Williams <williams@redhat.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Leo Yan <leo.yan@linaro.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>, Kim Phillips <kim.phillips@arm.com>,
	Mike Leach <mike.leach@linaro.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Robert Walker <robert.walker@arm.com>,
	linux-arm-kernel@lists.infradead.org,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 13/21] perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet
Date: Wed,  1 Aug 2018 18:36:40 -0300	[thread overview]
Message-ID: <20180801213648.4814-14-acme@kernel.org> (raw)
In-Reply-To: <20180801213648.4814-1-acme@kernel.org>

From: Leo Yan <leo.yan@linaro.org>

For CS_ETM_TRACE_ON packet, its fields 'packet->start_addr' and
'packet->end_addr' equal to 0xdeadbeefdeadbeefUL which are emitted in
the decoder layer as dummy value, but the dummy value is pointless for
branch sample when we use 'perf script' command to check program flow.

This patch is a preparation to support CS_ETM_TRACE_ON packet for branch
sample, it converts the dummy address value to zero for more readable;
this is accomplished by cs_etm__last_executed_instr() and
cs_etm__first_executed_instr().  The later one is a new function
introduced by this patch.

Signed-off-by: Leo Yan <leo.yan@linaro.org>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Kim Phillips <kim.phillips@arm.com>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Robert Walker <robert.walker@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/1531295145-596-5-git-send-email-leo.yan@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/cs-etm.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
index ae7c9c880cb2..976db8483478 100644
--- a/tools/perf/util/cs-etm.c
+++ b/tools/perf/util/cs-etm.c
@@ -494,6 +494,10 @@ static inline void cs_etm__reset_last_branch_rb(struct cs_etm_queue *etmq)
 
 static inline u64 cs_etm__last_executed_instr(struct cs_etm_packet *packet)
 {
+	/* Returns 0 for the CS_ETM_TRACE_ON packet */
+	if (packet->sample_type == CS_ETM_TRACE_ON)
+		return 0;
+
 	/*
 	 * The packet records the execution range with an exclusive end address
 	 *
@@ -505,6 +509,15 @@ static inline u64 cs_etm__last_executed_instr(struct cs_etm_packet *packet)
 	return packet->end_addr - A64_INSTR_SIZE;
 }
 
+static inline u64 cs_etm__first_executed_instr(struct cs_etm_packet *packet)
+{
+	/* Returns 0 for the CS_ETM_TRACE_ON packet */
+	if (packet->sample_type == CS_ETM_TRACE_ON)
+		return 0;
+
+	return packet->start_addr;
+}
+
 static inline u64 cs_etm__instr_count(const struct cs_etm_packet *packet)
 {
 	/*
@@ -546,7 +559,7 @@ static void cs_etm__update_last_branch_rb(struct cs_etm_queue *etmq)
 
 	be       = &bs->entries[etmq->last_branch_pos];
 	be->from = cs_etm__last_executed_instr(etmq->prev_packet);
-	be->to	 = etmq->packet->start_addr;
+	be->to	 = cs_etm__first_executed_instr(etmq->packet);
 	/* No support for mispredict */
 	be->flags.mispred = 0;
 	be->flags.predicted = 1;
@@ -701,7 +714,7 @@ static int cs_etm__synth_branch_sample(struct cs_etm_queue *etmq)
 	sample.ip = cs_etm__last_executed_instr(etmq->prev_packet);
 	sample.pid = etmq->pid;
 	sample.tid = etmq->tid;
-	sample.addr = etmq->packet->start_addr;
+	sample.addr = cs_etm__first_executed_instr(etmq->packet);
 	sample.id = etmq->etm->branches_id;
 	sample.stream_id = etmq->etm->branches_id;
 	sample.period = 1;
-- 
2.14.4

  parent reply	other threads:[~2018-08-01 21:36 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-01 21:36 [GIT PULL 00/21] perf/core improvements and fixes Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 01/21] perf trace beauty: Default header_dir to cwd to work without parms Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 02/21] perf evlist: Fix error out while applying initial delay and LBR Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 03/21] perf tests: Fix complex event name parsing Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 04/21] tools include uapi: Grab a copy of linux/in.h Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 05/21] perf beauty: Add a generator for IPPROTO_ socket's protocol constants Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 06/21] perf trace beauty: Do not print NULL strarray entries Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 07/21] perf trace beauty: Add beautifiers for 'socket''s 'protocol' arg Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 08/21] perf trace: Beautify the AF_INET & AF_INET6 'socket' syscall 'protocol' args Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 09/21] perf tests: Fix indexing when invoking subtests Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 10/21] perf c2c report: Fix crash for empty browser Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 11/21] perf build: Fix installation directory for eBPF Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 12/21] perf cs-etm: Fix start tracing packet handling Arnaldo Carvalho de Melo
2018-08-01 21:36 ` Arnaldo Carvalho de Melo [this message]
2018-08-01 21:36 ` [PATCH 14/21] perf cs-etm: Generate branch sample when receiving a CS_ETM_TRACE_ON packet Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 15/21] perf cs-etm: Generate branch sample for " Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 16/21] perf vendor events arm64: Update ThunderX2 implementation defined pmu core events Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 17/21] perf list: Unify metric group description format with PMU event description Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 18/21] perf bpf: Show better message when failing to load an object Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 19/21] perf tools: Allow overriding MAX_NR_CPUS at compile time Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 20/21] perf bpf: Include uapi/linux/bpf.h from the 'perf trace' script's bpf.h Arnaldo Carvalho de Melo
2018-08-01 21:36 ` [PATCH 21/21] perf trace: Do not require --no-syscalls to suppress strace like output Arnaldo Carvalho de Melo
2018-08-02  8:03 ` [GIT PULL 00/21] perf/core improvements and fixes Ingo Molnar

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=20180801213648.4814-14-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@redhat.com \
    --cc=kim.phillips@arm.com \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mike.leach@linaro.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=robert.walker@arm.com \
    --cc=williams@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).