All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Leo Yan <leo.yan@linaro.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Coresight ML <coresight@lists.linaro.org>,
	linux-kernel@vger.kernel.org,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Robert Walker <robert.walker@arm.com>,
	Jiri Olsa <jolsa@redhat.com>,
	linux-arm-kernel@lists.infradead.org,
	Mike Leach <mike.leach@linaro.org>
Subject: Re: [PATCH v2 3/6] perf cs-etm: Rename CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY
Date: Mon, 10 Dec 2018 15:51:32 -0700	[thread overview]
Message-ID: <20181210225132.GB12152@xps15> (raw)
In-Reply-To: <1544431981-24144-4-git-send-email-leo.yan@linaro.org>

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
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Leo Yan <leo.yan@linaro.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Coresight ML <coresight@lists.linaro.org>,
	Mike Leach <mike.leach@linaro.org>,
	Robert Walker <robert.walker@arm.com>
Subject: Re: [PATCH v2 3/6] perf cs-etm: Rename CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY
Date: Mon, 10 Dec 2018 15:51:32 -0700	[thread overview]
Message-ID: <20181210225132.GB12152@xps15> (raw)
In-Reply-To: <1544431981-24144-4-git-send-email-leo.yan@linaro.org>

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
> 

  reply	other threads:[~2018-12-10 22:51 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-10  8:52 [PATCH v2 0/6] perf cs-etm: Correct packets handling Leo Yan
2018-12-10  8:52 ` Leo Yan
2018-12-10  8:52 ` [PATCH v2 1/6] perf cs-etm: Correct packets swapping in cs_etm__flush() Leo Yan
2018-12-10  8:52   ` Leo Yan
2018-12-10  8:52 ` [PATCH v2 2/6] perf cs-etm: Avoid stale branch samples when flush packet Leo Yan
2018-12-10  8:52   ` Leo Yan
2018-12-10 22:48   ` Mathieu Poirier
2018-12-10 22:48     ` Mathieu Poirier
2018-12-10  8:52 ` [PATCH v2 3/6] perf cs-etm: Rename CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY Leo Yan
2018-12-10  8:52   ` Leo Yan
2018-12-10 22:51   ` Mathieu Poirier [this message]
2018-12-10 22:51     ` Mathieu Poirier
2018-12-10  8:52 ` [PATCH v2 4/6] perf cs-etm: Treat NO_SYNC element as trace discontinuity Leo Yan
2018-12-10  8:52   ` Leo Yan
2018-12-10 22:53   ` Mathieu Poirier
2018-12-10 22:53     ` Mathieu Poirier
2018-12-10  8:53 ` [PATCH v2 5/6] perf cs-etm: Treat EO_TRACE " Leo Yan
2018-12-10  8:53   ` Leo Yan
2018-12-10 23:04   ` Mathieu Poirier
2018-12-10 23:04     ` Mathieu Poirier
2018-12-11  0:39     ` leo.yan
2018-12-11  0:39       ` leo.yan
2018-12-10  8:53 ` [PATCH v2 6/6] perf cs-etm: Generate branch sample for exception packet Leo Yan
2018-12-10  8:53   ` Leo Yan
2018-12-10 23:07   ` Mathieu Poirier
2018-12-10 23:07     ` Mathieu Poirier

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=20181210225132.GB12152@xps15 \
    --to=mathieu.poirier@linaro.org \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=coresight@lists.linaro.org \
    --cc=jolsa@redhat.com \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mike.leach@linaro.org \
    --cc=namhyung@kernel.org \
    --cc=robert.walker@arm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.