lkml.org 
[lkml]   [2022]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH 1/4] perf: Add error message for unsupported branch stack cases
From
Hi James,

On 3/7/22 22:49, James Clark wrote:
> EOPNOTSUPP is a possible return value when branch stacks are requested
> but they aren't enabled in the kernel or hardware. It's also returned if
> they aren't supported on the specific event type. The currently printed

specific event type ? Events carrying certain branch sampling/filter flags
which could not be supported in the kernel on a given platform ?

> error message about sampling/overflow-interrupts is not correct in this
> case.
>
> Add a check for branch stacks before sample_period is checked because
> sample_period is also set (to the default value) when using branch
> stacks.

Makes sense.

>
> Before this change (when branch stacks aren't supported):
>
> perf record -j any
> Error:
> cycles: PMU Hardware doesn't support sampling/overflow-interrupts. Try 'perf stat'
>
> After this change:
>
> perf record -j any
> Error:
> cycles: PMU Hardware or event type doesn't support branch stack sampling.

Indeed better in explaining what went wrong.

>
> Signed-off-by: James Clark <james.clark@arm.com>
> ---
> tools/perf/util/evsel.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index 22d3267ce294..4e10a4ec11c7 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -2909,6 +2909,10 @@ int evsel__open_strerror(struct evsel *evsel, struct target *target,
> "No such device - did you specify an out-of-range profile CPU?");
> break;
> case EOPNOTSUPP:
> + if (evsel->core.attr.sample_type & PERF_SAMPLE_BRANCH_STACK)
> + return scnprintf(msg, size,
> + "%s: PMU Hardware or event type doesn't support branch stack sampling.",
> + evsel__name(evsel));

As this is being added right at the beginning for returned EOPNOTSUPP error,
previous fall through behaviour for all other cases will be preserved.

> if (evsel->core.attr.aux_output)
> return scnprintf(msg, size,
> "%s: PMU Hardware doesn't support 'aux_output' feature",

Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>

\
 
 \ /
  Last update: 2022-03-08 05:17    [W:0.499 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site