[PATCH] perf scripts python arm-cs-trace-disasm.py: Skip disasm if address continuity is broken

Ganapatrao Kulkarni gankulkarni at os.amperecomputing.com
Fri Aug 23 02:57:16 PDT 2024


Hi James/Mike,

On 23-08-2024 02:33 pm, James Clark wrote:
> 
> 
> On 19/08/2024 11:59 am, Mike Leach wrote:
>> Hi,
>>
>> A new branch of OpenCSD is available - ocsd-consistency-checks-1.5.4-rc1
>>
>> Testing I managed to do confirms the N atom on unconditional branches
>> appear to work. I do not have a test case for the range
>> discontinuities.
>>
>> The checks are enabled using operation flags on decoder creation. See
>> the docs for details.
>>
>> Mike
>>
> 
> Hi Mike,
> 
> I tested the new OpenCSD and I don't see the error anymore in the
> disassembly script. I'm not sure if we need to go any further and add
> the backwards check, it looks like just a later symptom and the checks
> that you've added already prevent it.
> 
> If you release a new version I can send the perf patch. I was going to
> use these flags if that looks right to you? As far as I know that's the
> set that can be always on and won't fail on bad hardware?
> 
> I also assumed that ETM4_OPFLG_PKTDEC_AA64_OPCODE_CHK can be given even
> for etmv3 and it's just a nop?
> 
> 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 e917985bbbe6..90967fd807e6 100644
> --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
> @@ -685,9 +685,14 @@ cs_etm_decoder__create_etm_decoder(struct 
> cs_etm_decoder_params *d_params,
>                  return 0;
> 
>          if (d_params->operation == CS_ETM_OPERATION_DECODE) {
> +               int decode_flags = OCSD_CREATE_FLG_FULL_DECODER;
> +#ifdef OCSD_OPFLG_N_UNCOND_DIR_BR_CHK
> +               decode_flags |= OCSD_OPFLG_N_UNCOND_DIR_BR_CHK | 
> OCSD_OPFLG_CHK_RANGE_CONTINUE |
> +                               ETM4_OPFLG_PKTDEC_AA64_OPCODE_CHK;
> +#endif
>                  if (ocsd_dt_create_decoder(decoder->dcd_tree,
>                                             decoder->decoder_name,
> -                                          OCSD_CREATE_FLG_FULL_DECODER,
> +                                          decode_flags,
>                                             trace_config, &csid))
>                          return -1;
> 

I tried Mike's branch with above James's patch and still the segfault is 
happening to us.

-- 
Thanks,
Ganapat/GK



More information about the linux-arm-kernel mailing list