perf: cs-etm: Update decoder code for OpenCSD version 1.4

Message ID 20230120153706.20388-1-mike.leach@linaro.org
State New
Headers
Series perf: cs-etm: Update decoder code for OpenCSD version 1.4 |

Commit Message

Mike Leach Jan. 20, 2023, 3:37 p.m. UTC
  OpenCSD version 1.4 is released with support for FEAT_ITE.
This adds a new packet type, with associated output element ID in
the packet type enum - OCSD_GEN_TRC_ELEM_INSTRUMENTATION.

As we just ignore this packet in perf, add to the switch statement
to avoid the "enum not handled in switch error", but conditionally
so as not to break the perf build for older OpenCSD installations.

Signed-off-by: Mike Leach <mike.leach@linaro.org>
---
 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

James Clark Jan. 20, 2023, 3:47 p.m. UTC | #1
On 20/01/2023 15:37, Mike Leach wrote:
> OpenCSD version 1.4 is released with support for FEAT_ITE.
> This adds a new packet type, with associated output element ID in
> the packet type enum - OCSD_GEN_TRC_ELEM_INSTRUMENTATION.
> 
> As we just ignore this packet in perf, add to the switch statement
> to avoid the "enum not handled in switch error", but conditionally
> so as not to break the perf build for older OpenCSD installations.
> 
> Signed-off-by: Mike Leach <mike.leach@linaro.org>
> ---
>  tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> 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 fa3aa9c0fb2e..48e7121880a9 100644
> --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> @@ -604,6 +604,9 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(
>  	case OCSD_GEN_TRC_ELEM_CUSTOM:
>  	case OCSD_GEN_TRC_ELEM_SYNC_MARKER:
>  	case OCSD_GEN_TRC_ELEM_MEMTRANS:
> +#if (OCSD_VER_NUM >= 0x010400)
> +	case OCSD_GEN_TRC_ELEM_INSTRUMENTATION:
> +#endif
>  	default:
>  		break;
>  	}

Checked the build with both old and new versions of OpenCSD and it's ok:

Reviewed-by: James Clark <james.clark@arm.com>
  
Ian Rogers Jan. 24, 2023, 9:50 p.m. UTC | #2
On Fri, Jan 20, 2023 at 7:47 AM James Clark <james.clark@arm.com> wrote:
>
>
>
> On 20/01/2023 15:37, Mike Leach wrote:
> > OpenCSD version 1.4 is released with support for FEAT_ITE.
> > This adds a new packet type, with associated output element ID in
> > the packet type enum - OCSD_GEN_TRC_ELEM_INSTRUMENTATION.
> >
> > As we just ignore this packet in perf, add to the switch statement
> > to avoid the "enum not handled in switch error", but conditionally
> > so as not to break the perf build for older OpenCSD installations.
> >
> > Signed-off-by: Mike Leach <mike.leach@linaro.org>
> > ---
> >  tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > 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 fa3aa9c0fb2e..48e7121880a9 100644
> > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> > @@ -604,6 +604,9 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(
> >       case OCSD_GEN_TRC_ELEM_CUSTOM:
> >       case OCSD_GEN_TRC_ELEM_SYNC_MARKER:
> >       case OCSD_GEN_TRC_ELEM_MEMTRANS:
> > +#if (OCSD_VER_NUM >= 0x010400)
> > +     case OCSD_GEN_TRC_ELEM_INSTRUMENTATION:
> > +#endif
> >       default:
> >               break;
> >       }
>
> Checked the build with both old and new versions of OpenCSD and it's ok:
>
> Reviewed-by: James Clark <james.clark@arm.com>

Acked-by: Ian Rogers <irogers@google.com>

Thanks,
Ian
  
James Clark Jan. 30, 2023, 12:05 p.m. UTC | #3
On 24/01/2023 21:50, Ian Rogers wrote:
> On Fri, Jan 20, 2023 at 7:47 AM James Clark <james.clark@arm.com> wrote:
>>
>>
>>
>> On 20/01/2023 15:37, Mike Leach wrote:
>>> OpenCSD version 1.4 is released with support for FEAT_ITE.
>>> This adds a new packet type, with associated output element ID in
>>> the packet type enum - OCSD_GEN_TRC_ELEM_INSTRUMENTATION.
>>>
>>> As we just ignore this packet in perf, add to the switch statement
>>> to avoid the "enum not handled in switch error", but conditionally
>>> so as not to break the perf build for older OpenCSD installations.
>>>
>>> Signed-off-by: Mike Leach <mike.leach@linaro.org>
>>> ---
>>>  tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 3 +++
>>>  1 file changed, 3 insertions(+)
>>>
>>> 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 fa3aa9c0fb2e..48e7121880a9 100644
>>> --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
>>> +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
>>> @@ -604,6 +604,9 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(
>>>       case OCSD_GEN_TRC_ELEM_CUSTOM:
>>>       case OCSD_GEN_TRC_ELEM_SYNC_MARKER:
>>>       case OCSD_GEN_TRC_ELEM_MEMTRANS:
>>> +#if (OCSD_VER_NUM >= 0x010400)
>>> +     case OCSD_GEN_TRC_ELEM_INSTRUMENTATION:
>>> +#endif
>>>       default:
>>>               break;
>>>       }
>>
>> Checked the build with both old and new versions of OpenCSD and it's ok:
>>
>> Reviewed-by: James Clark <james.clark@arm.com>
> 
> Acked-by: Ian Rogers <irogers@google.com>
> 
> Thanks,
> Ian

Hi Arnaldo,

Is it ok to merge this change? If anyone is building with the latest
OpenCSD they will get a build error on the unhandled switch case, and we
just got it in our CI too.

I suppose we could disable the warning around this switch, but it's
pretty rare to add new packets so might be best to leave it.

Thanks
James
  
Arnaldo Carvalho de Melo Jan. 30, 2023, 1:59 p.m. UTC | #4
Em Mon, Jan 30, 2023 at 12:05:53PM +0000, James Clark escreveu:
> On 24/01/2023 21:50, Ian Rogers wrote:
> > On Fri, Jan 20, 2023 at 7:47 AM James Clark <james.clark@arm.com> wrote:
> >> On 20/01/2023 15:37, Mike Leach wrote:
> >>> OpenCSD version 1.4 is released with support for FEAT_ITE.
> >>> This adds a new packet type, with associated output element ID in
> >>> the packet type enum - OCSD_GEN_TRC_ELEM_INSTRUMENTATION.
> >>>
> >>> As we just ignore this packet in perf, add to the switch statement
> >>> to avoid the "enum not handled in switch error", but conditionally
> >>> so as not to break the perf build for older OpenCSD installations.
> >>>
> >>> Signed-off-by: Mike Leach <mike.leach@linaro.org>
> >>> ---
> >>>  tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 3 +++
> >>>  1 file changed, 3 insertions(+)
> >>>
> >>> 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 fa3aa9c0fb2e..48e7121880a9 100644
> >>> --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> >>> +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> >>> @@ -604,6 +604,9 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(
> >>>       case OCSD_GEN_TRC_ELEM_CUSTOM:
> >>>       case OCSD_GEN_TRC_ELEM_SYNC_MARKER:
> >>>       case OCSD_GEN_TRC_ELEM_MEMTRANS:
> >>> +#if (OCSD_VER_NUM >= 0x010400)
> >>> +     case OCSD_GEN_TRC_ELEM_INSTRUMENTATION:
> >>> +#endif
> >>>       default:
> >>>               break;
> >>>       }
> >>
> >> Checked the build with both old and new versions of OpenCSD and it's ok:
> >>
> >> Reviewed-by: James Clark <james.clark@arm.com>
> > 
> > Acked-by: Ian Rogers <irogers@google.com>
> > 
> > Thanks,
> > Ian
> 
> Hi Arnaldo,
> 
> Is it ok to merge this change? If anyone is building with the latest
> OpenCSD they will get a build error on the unhandled switch case, and we
> just got it in our CI too.
> 
> I suppose we could disable the warning around this switch, but it's
> pretty rare to add new packets so might be best to leave it.

Thanks, applied.

- Arnaldo
  

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 fa3aa9c0fb2e..48e7121880a9 100644
--- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
+++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
@@ -604,6 +604,9 @@  static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer(
 	case OCSD_GEN_TRC_ELEM_CUSTOM:
 	case OCSD_GEN_TRC_ELEM_SYNC_MARKER:
 	case OCSD_GEN_TRC_ELEM_MEMTRANS:
+#if (OCSD_VER_NUM >= 0x010400)
+	case OCSD_GEN_TRC_ELEM_INSTRUMENTATION:
+#endif
 	default:
 		break;
 	}