On 23/08/2024 10:57 am, Ganapatrao Kulkarni wrote:
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.
Did you update OpenCSD as well?
On 23/08/2024 11:36 am, James Clark wrote:
On 23/08/2024 10:57 am, Ganapatrao Kulkarni wrote:
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.
Did you update OpenCSD as well?
Oh sorry I only read the second part I see you did.
Can you share your perf.data file? And do you see any of the new warnings:
DCD_ETMV4_0018 : 0x002e (OCSD_ERR_BAD_DECODE_IMAGE) [Mismatch between trace packets and decode image.]; TrcIdx=3059; CS ID=12; Bad program image - N Atom on unconditional direct BR.