2022-10-28 13:16:34

by James Clark

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



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 <[email protected]>
> ---
> 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);
> }


2022-11-02 07:49:31

by Athira Rajeev

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



> On 28-Oct-2022, at 5:52 PM, James Clark <[email protected]> wrote:
>
>
>
> 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?
>

Hi James,

Sorry for the late response. I was out on vacation couple of days.

I tested with the new change and verified it skips on powerpc.

Tested-by: Athira Rajeev <[email protected]>

Thanks
Athira
> 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 <[email protected]>
>> ---
>> 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);
>> }


2022-11-08 21:39:04

by Arnaldo Carvalho de Melo

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

Em Wed, Nov 02, 2022 at 12:21:11PM +0530, Athira Rajeev escreveu:
>
>
> > On 28-Oct-2022, at 5:52 PM, James Clark <[email protected]> wrote:
> >
> >
> >
> > 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?
> >
>
> Hi James,
>
> Sorry for the late response. I was out on vacation couple of days.
>
> I tested with the new change and verified it skips on powerpc.
>
> Tested-by: Athira Rajeev <[email protected]>

Thanks, applied.

- Arnaldo


> Thanks
> Athira
> > 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 <[email protected]>
> >> ---
> >> 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);
> >> }

--

- Arnaldo