Re: [PATCH] perf test: Fix test_arm_coresight.sh failures on Juno

From: Leo Yan
Date: Thu Oct 06 2022 - 10:49:49 EST


Hi James,

On Wed, Oct 05, 2022 at 03:05:08PM +0100, James Clark wrote:
> This test commonly fails on Arm Juno because the instruction interval
> is large enough to miss generating any samples for Perf in system-wide
> mode.
>
> Fix this by lowering the interval until a comfortable number of Perf
> instructions are generated. The test is still quick to run because only
> a small amount of trace is gathered.
>
> Before:
>
> sudo ./perf test coresight -vvv
> ...
> Recording trace with system wide mode
> Looking at perf.data file for dumping branch samples:
> Looking at perf.data file for reporting branch samples:
> Looking at perf.data file for instruction samples:
> CoreSight system wide testing: FAIL
> ...
>
> After:
>
> sudo ./perf test coresight -vvv
> ...
> Recording trace with system wide mode
> Looking at perf.data file for dumping branch samples:
> Looking at perf.data file for reporting branch samples:
> Looking at perf.data file for instruction samples:
> CoreSight system wide testing: PASS
> ...

Since Arm Juno board has zero timestamp for CoreSight, I don't think
now arm_cs_etm.sh can really work on it.

If we want to pass the test on Juno board, we need to add option
"--itrace=Zi1000i" for "perf report" and "perf script"; but seems
to me "--itrace=Z..." is not a general case for testing ...

> Signed-off-by: James Clark <james.clark@xxxxxxx>
> ---
> tools/perf/tests/shell/test_arm_coresight.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/tests/shell/test_arm_coresight.sh b/tools/perf/tests/shell/test_arm_coresight.sh
> index e4cb4f1806ff..daad786cf48d 100755
> --- a/tools/perf/tests/shell/test_arm_coresight.sh
> +++ b/tools/perf/tests/shell/test_arm_coresight.sh
> @@ -70,7 +70,7 @@ perf_report_instruction_samples() {
> # 68.12% touch libc-2.27.so [.] _dl_addr
> # 5.80% touch libc-2.27.so [.] getenv
> # 4.35% touch ld-2.27.so [.] _dl_fixup
> - perf report --itrace=i1000i --stdio -i ${perfdata} 2>&1 | \
> + perf report --itrace=i20i --stdio -i ${perfdata} 2>&1 | \
> egrep " +[0-9]+\.[0-9]+% +$1" > /dev/null 2>&1

So here I am suspect that changing to "--itrace=i20i" can allow the test
to pass on Juno board. Could you confirm for this?

Thanks,
Leo