Re: [PATCH] perf test: Fix skipping branch stack sampling test

From: James Clark
Date: Fri Oct 28 2022 - 08:22:37 EST




On 28/10/2022 13:19, James Clark wrote:
> Commit f4a2aade6809 ("perf tests powerpc: Fix branch stack sampling test
> to include sanity check for branch filter") added a skip if certain
> branch options aren't available. But the change added both -b
> (--branch-any) and --branch-filter options at the same time, which will
> always result in a failure on any platform because the arguments can't
> be used together.
>
> Fix this by removing -b (--branch-any) and leaving --branch-filter which
> already specifies 'any'. Also add warning messages to the test and perf
> tool.
>

Hi Athira,

Are you able to check if this still skips for you on PowerPC with this
new change?

Thanks
James

> Output on x86 before this fix:
>
> $ sudo ./perf test branch
> 108: Check branch stack sampling : Skip
>
> After:
>
> $ sudo ./perf test branch
> 108: Check branch stack sampling : Ok
>
> Fixes: f4a2aade6809 ("perf tests powerpc: Fix branch stack sampling test to include sanity check for branch filter")
> Signed-off-by: James Clark <james.clark@xxxxxxx>
> ---
> tools/perf/tests/shell/test_brstack.sh | 5 ++++-
> tools/perf/util/parse-branch-options.c | 4 +++-
> 2 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/tests/shell/test_brstack.sh b/tools/perf/tests/shell/test_brstack.sh
> index ec801cffae6b..d7ff5c4b4da4 100755
> --- a/tools/perf/tests/shell/test_brstack.sh
> +++ b/tools/perf/tests/shell/test_brstack.sh
> @@ -13,7 +13,10 @@ fi
>
> # skip the test if the hardware doesn't support branch stack sampling
> # and if the architecture doesn't support filter types: any,save_type,u
> -perf record -b -o- -B --branch-filter any,save_type,u true > /dev/null 2>&1 || exit 2
> +if ! perf record -o- --no-buildid --branch-filter any,save_type,u -- true > /dev/null 2>&1 ; then
> + echo "skip: system doesn't support filter types: any,save_type,u"
> + exit 2
> +fi
>
> TMPDIR=$(mktemp -d /tmp/__perf_test.program.XXXXX)
>
> diff --git a/tools/perf/util/parse-branch-options.c b/tools/perf/util/parse-branch-options.c
> index 00588b9db474..31faf2bb49ff 100644
> --- a/tools/perf/util/parse-branch-options.c
> +++ b/tools/perf/util/parse-branch-options.c
> @@ -102,8 +102,10 @@ parse_branch_stack(const struct option *opt, const char *str, int unset)
> /*
> * cannot set it twice, -b + --branch-filter for instance
> */
> - if (*mode)
> + if (*mode) {
> + pr_err("Error: Can't use --branch-any (-b) with --branch-filter (-j).\n");
> return -1;
> + }
>
> return parse_branch_str(str, mode);
> }