diff mbox series

[v2,5/6] perf cs-etm: Treat EO_TRACE element as trace discontinuity

Message ID 1544431981-24144-6-git-send-email-leo.yan@linaro.org
State Superseded
Headers show
Series perf cs-etm: Correct packets handling | expand

Commit Message

Leo Yan Dec. 10, 2018, 8:53 a.m. UTC
If decoder outputs EO_TRACE element, it means the end of the trace
buffer; this is a discontinuity and in this case the end of trace data
needs to be saved.

This patch generates CS_ETM_DISCONTINUITY packet for EO_TRACE element
hereby flushing the end of trace data in cs-etm.c.

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 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.7.4

Comments

Mathieu Poirier Dec. 10, 2018, 11:04 p.m. UTC | #1
On Mon, Dec 10, 2018 at 04:53:00PM +0800, Leo Yan wrote:
> If decoder outputs EO_TRACE element, it means the end of the trace

> buffer; this is a discontinuity and in this case the end of trace data

> needs to be saved.

> 

> This patch generates CS_ETM_DISCONTINUITY packet for EO_TRACE element

> hereby flushing the end of trace data in cs-etm.c.

> 

> 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 | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

> 

> 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 46b67f1..bcb5c98 100644

> --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c

> +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c

> @@ -411,6 +411,7 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(

>  	case OCSD_GEN_TRC_ELEM_UNKNOWN:

>  		break;

>  	case OCSD_GEN_TRC_ELEM_NO_SYNC:

> +	case OCSD_GEN_TRC_ELEM_EO_TRACE:

>  		resp = cs_etm_decoder__buffer_discontinuity(decoder,

>  							    trace_chan_id);


If you were to get rid of decoder::trace_on at the beginning of this set you
could put NO_SYNC, EO_TRACE and TRACE_ON together and call
cs_etm_decoder__buffer_discontinuity() only once.  I wouldn't mention it if you did
not have to respin but since you do, might as well just do it.  But that's
entirely up to you considering, at least in my opinion, that you have addressed
all of Mike and Rob' comments.

If you do not want to deal with decoder::trace_on as part of this set:

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>


>  		decoder->trace_on = false;

> @@ -431,7 +432,6 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(

>  		decoder->packet_buffer[decoder->tail].exc_ret = true;

>  		break;

>  	case OCSD_GEN_TRC_ELEM_PE_CONTEXT:

> -	case OCSD_GEN_TRC_ELEM_EO_TRACE:

>  	case OCSD_GEN_TRC_ELEM_ADDR_NACC:

>  	case OCSD_GEN_TRC_ELEM_TIMESTAMP:

>  	case OCSD_GEN_TRC_ELEM_CYCLE_COUNT:

> -- 

> 2.7.4

>
Leo Yan Dec. 11, 2018, 12:39 a.m. UTC | #2
Hi Mathieu,

On Mon, Dec 10, 2018 at 04:04:45PM -0700, Mathieu Poirier wrote:
> On Mon, Dec 10, 2018 at 04:53:00PM +0800, Leo Yan wrote:

> > If decoder outputs EO_TRACE element, it means the end of the trace

> > buffer; this is a discontinuity and in this case the end of trace data

> > needs to be saved.

> > 

> > This patch generates CS_ETM_DISCONTINUITY packet for EO_TRACE element

> > hereby flushing the end of trace data in cs-etm.c.

> > 

> > 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 | 2 +-

> >  1 file changed, 1 insertion(+), 1 deletion(-)

> > 

> > 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 46b67f1..bcb5c98 100644

> > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c

> > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c

> > @@ -411,6 +411,7 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(

> >  	case OCSD_GEN_TRC_ELEM_UNKNOWN:

> >  		break;

> >  	case OCSD_GEN_TRC_ELEM_NO_SYNC:

> > +	case OCSD_GEN_TRC_ELEM_EO_TRACE:

> >  		resp = cs_etm_decoder__buffer_discontinuity(decoder,

> >  							    trace_chan_id);

> 

> If you were to get rid of decoder::trace_on at the beginning of this set you

> could put NO_SYNC, EO_TRACE and TRACE_ON together and call

> cs_etm_decoder__buffer_discontinuity() only once.  I wouldn't mention it if you did

> not have to respin but since you do, might as well just do it.  But that's

> entirely up to you considering, at least in my opinion, that you have addressed

> all of Mike and Rob' comments.


Thanks for suggestion, this makes sense.  Will spin new patch series to
address this and also follow up other suggestions for this series.

Thanks,
Leo Yan

> If you do not want to deal with decoder::trace_on as part of this set:

> 

> Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> 

> >  		decoder->trace_on = false;

> > @@ -431,7 +432,6 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(

> >  		decoder->packet_buffer[decoder->tail].exc_ret = true;

> >  		break;

> >  	case OCSD_GEN_TRC_ELEM_PE_CONTEXT:

> > -	case OCSD_GEN_TRC_ELEM_EO_TRACE:

> >  	case OCSD_GEN_TRC_ELEM_ADDR_NACC:

> >  	case OCSD_GEN_TRC_ELEM_TIMESTAMP:

> >  	case OCSD_GEN_TRC_ELEM_CYCLE_COUNT:

> > -- 

> > 2.7.4

> >
diff mbox series

Patch

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 46b67f1..bcb5c98 100644
--- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
+++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
@@ -411,6 +411,7 @@  static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(
 	case OCSD_GEN_TRC_ELEM_UNKNOWN:
 		break;
 	case OCSD_GEN_TRC_ELEM_NO_SYNC:
+	case OCSD_GEN_TRC_ELEM_EO_TRACE:
 		resp = cs_etm_decoder__buffer_discontinuity(decoder,
 							    trace_chan_id);
 		decoder->trace_on = false;
@@ -431,7 +432,6 @@  static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(
 		decoder->packet_buffer[decoder->tail].exc_ret = true;
 		break;
 	case OCSD_GEN_TRC_ELEM_PE_CONTEXT:
-	case OCSD_GEN_TRC_ELEM_EO_TRACE:
 	case OCSD_GEN_TRC_ELEM_ADDR_NACC:
 	case OCSD_GEN_TRC_ELEM_TIMESTAMP:
 	case OCSD_GEN_TRC_ELEM_CYCLE_COUNT: