Message ID | 1544431981-24144-4-git-send-email-leo.yan@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | perf cs-etm: Correct packets handling | expand |
Hi Leo, On Mon, Dec 10, 2018 at 04:52:58PM +0800, Leo Yan wrote: > TRACE_ON element is used at the beginning of trace, it also can be > appeared in the middle of trace data to indicate discontinuity; for > example, it's possible to see multiple TRACE_ON elements in the trace > stream if the trace is being limited by address range filtering. > > Furthermore, except TRACE_ON element is for discontinuity, NO_SYNC and > EO_TRACE also can be used to indicate discontinuity, though they are > used for different scenarios for trace is interrupted. > > This patch is to rename sample type CS_ETM_TRACE_ON to > CS_ETM_DISCONTINUITY, firstly the new name describes more closely the > purpose of the packet; secondly this is a preparation for other output > elements which also cause the trace discontinuity thus they can share > the same one packet type. > > This patch also refactors the enumerations in cs_etm_sample_type by > converting from bit shifting value to continuous numbers. > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Mike Leach <mike.leach@linaro.org> > Cc: Robert Walker <robert.walker@arm.com> > Signed-off-by: Leo Yan <leo.yan@linaro.org> > --- > tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 10 +++++----- > tools/perf/util/cs-etm-decoder/cs-etm-decoder.h | 6 +++--- > tools/perf/util/cs-etm.c | 12 ++++++------ > 3 files changed, 14 insertions(+), 14 deletions(-) > > diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > index 0b4c862..a3994f1 100644 > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > @@ -391,11 +391,11 @@ cs_etm_decoder__buffer_range(struct cs_etm_decoder *decoder, > } > > static ocsd_datapath_resp_t > -cs_etm_decoder__buffer_trace_on(struct cs_etm_decoder *decoder, > - const uint8_t trace_chan_id) > +cs_etm_decoder__buffer_discontinuity(struct cs_etm_decoder *decoder, > + const uint8_t trace_chan_id) > { > return cs_etm_decoder__buffer_packet(decoder, trace_chan_id, > - CS_ETM_TRACE_ON); > + CS_ETM_DISCONTINUITY); > } > > static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( > @@ -414,8 +414,8 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( > decoder->trace_on = false; > break; > case OCSD_GEN_TRC_ELEM_TRACE_ON: > - resp = cs_etm_decoder__buffer_trace_on(decoder, > - trace_chan_id); > + resp = cs_etm_decoder__buffer_discontinuity(decoder, > + trace_chan_id); > decoder->trace_on = true; > break; > case OCSD_GEN_TRC_ELEM_INSTR_RANGE: > diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > index b295dd2..a272317 100644 > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > @@ -23,9 +23,9 @@ struct cs_etm_buffer { > }; > > enum cs_etm_sample_type { > - CS_ETM_EMPTY = 0, > - CS_ETM_RANGE = 1 << 0, > - CS_ETM_TRACE_ON = 1 << 1, > + CS_ETM_EMPTY, > + CS_ETM_RANGE, > + CS_ETM_DISCONTINUITY, > }; I'm in agreement with what you're doing in this patch but the above is a different change and you can't pack it in here. Just split it off in a separate patch and everything will be fine. > > enum cs_etm_isa { > diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c > index ffc4fe5..cea3158 100644 > --- a/tools/perf/util/cs-etm.c > +++ b/tools/perf/util/cs-etm.c > @@ -562,8 +562,8 @@ static inline int cs_etm__t32_instr_size(struct cs_etm_queue *etmq, > > 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) > + /* Returns 0 for the CS_ETM_DISCONTINUITY packet */ > + if (packet->sample_type == CS_ETM_DISCONTINUITY) > return 0; > > return packet->start_addr; > @@ -572,8 +572,8 @@ static inline u64 cs_etm__first_executed_instr(struct cs_etm_packet *packet) > static inline > u64 cs_etm__last_executed_instr(const struct cs_etm_packet *packet) > { > - /* Returns 0 for the CS_ETM_TRACE_ON packet */ > - if (packet->sample_type == CS_ETM_TRACE_ON) > + /* Returns 0 for the CS_ETM_DISCONTINUITY packet */ > + if (packet->sample_type == CS_ETM_DISCONTINUITY) > return 0; > > return packet->end_addr - packet->last_instr_size; > @@ -972,7 +972,7 @@ static int cs_etm__sample(struct cs_etm_queue *etmq) > bool generate_sample = false; > > /* Generate sample for tracing on packet */ > - if (etmq->prev_packet->sample_type == CS_ETM_TRACE_ON) > + if (etmq->prev_packet->sample_type == CS_ETM_DISCONTINUITY) > generate_sample = true; > > /* Generate sample for branch taken packet */ > @@ -1148,7 +1148,7 @@ static int cs_etm__run_decoder(struct cs_etm_queue *etmq) > */ > cs_etm__sample(etmq); > break; > - case CS_ETM_TRACE_ON: > + case CS_ETM_DISCONTINUITY: > /* > * Discontinuity in trace, flush > * previous branch stack > -- > 2.7.4 >
diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c index 0b4c862..a3994f1 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c @@ -391,11 +391,11 @@ cs_etm_decoder__buffer_range(struct cs_etm_decoder *decoder, } static ocsd_datapath_resp_t -cs_etm_decoder__buffer_trace_on(struct cs_etm_decoder *decoder, - const uint8_t trace_chan_id) +cs_etm_decoder__buffer_discontinuity(struct cs_etm_decoder *decoder, + const uint8_t trace_chan_id) { return cs_etm_decoder__buffer_packet(decoder, trace_chan_id, - CS_ETM_TRACE_ON); + CS_ETM_DISCONTINUITY); } static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( @@ -414,8 +414,8 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( decoder->trace_on = false; break; case OCSD_GEN_TRC_ELEM_TRACE_ON: - resp = cs_etm_decoder__buffer_trace_on(decoder, - trace_chan_id); + resp = cs_etm_decoder__buffer_discontinuity(decoder, + trace_chan_id); decoder->trace_on = true; break; case OCSD_GEN_TRC_ELEM_INSTR_RANGE: diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h index b295dd2..a272317 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h @@ -23,9 +23,9 @@ struct cs_etm_buffer { }; enum cs_etm_sample_type { - CS_ETM_EMPTY = 0, - CS_ETM_RANGE = 1 << 0, - CS_ETM_TRACE_ON = 1 << 1, + CS_ETM_EMPTY, + CS_ETM_RANGE, + CS_ETM_DISCONTINUITY, }; enum cs_etm_isa { diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index ffc4fe5..cea3158 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -562,8 +562,8 @@ static inline int cs_etm__t32_instr_size(struct cs_etm_queue *etmq, 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) + /* Returns 0 for the CS_ETM_DISCONTINUITY packet */ + if (packet->sample_type == CS_ETM_DISCONTINUITY) return 0; return packet->start_addr; @@ -572,8 +572,8 @@ static inline u64 cs_etm__first_executed_instr(struct cs_etm_packet *packet) static inline u64 cs_etm__last_executed_instr(const struct cs_etm_packet *packet) { - /* Returns 0 for the CS_ETM_TRACE_ON packet */ - if (packet->sample_type == CS_ETM_TRACE_ON) + /* Returns 0 for the CS_ETM_DISCONTINUITY packet */ + if (packet->sample_type == CS_ETM_DISCONTINUITY) return 0; return packet->end_addr - packet->last_instr_size; @@ -972,7 +972,7 @@ static int cs_etm__sample(struct cs_etm_queue *etmq) bool generate_sample = false; /* Generate sample for tracing on packet */ - if (etmq->prev_packet->sample_type == CS_ETM_TRACE_ON) + if (etmq->prev_packet->sample_type == CS_ETM_DISCONTINUITY) generate_sample = true; /* Generate sample for branch taken packet */ @@ -1148,7 +1148,7 @@ static int cs_etm__run_decoder(struct cs_etm_queue *etmq) */ cs_etm__sample(etmq); break; - case CS_ETM_TRACE_ON: + case CS_ETM_DISCONTINUITY: /* * Discontinuity in trace, flush * previous branch stack
TRACE_ON element is used at the beginning of trace, it also can be appeared in the middle of trace data to indicate discontinuity; for example, it's possible to see multiple TRACE_ON elements in the trace stream if the trace is being limited by address range filtering. Furthermore, except TRACE_ON element is for discontinuity, NO_SYNC and EO_TRACE also can be used to indicate discontinuity, though they are used for different scenarios for trace is interrupted. This patch is to rename sample type CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY, firstly the new name describes more closely the purpose of the packet; secondly this is a preparation for other output elements which also cause the trace discontinuity thus they can share the same one packet type. This patch also refactors the enumerations in cs_etm_sample_type by converting from bit shifting value to continuous numbers. Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Mike Leach <mike.leach@linaro.org> Cc: Robert Walker <robert.walker@arm.com> Signed-off-by: Leo Yan <leo.yan@linaro.org> --- tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 10 +++++----- tools/perf/util/cs-etm-decoder/cs-etm-decoder.h | 6 +++--- tools/perf/util/cs-etm.c | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) -- 2.7.4