Re: [PATCH] perf script: Fix error when printing 'weight' field

From: Jiri Olsa
Date: Mon Feb 21 2022 - 14:46:43 EST


On Mon, Feb 21, 2022 at 05:17:06PM +0000, German Gomez wrote:
> In SPE traces the 'weight' field can't be printed in perf-script because
> the 'dummy:u' event doesn't have the WEIGHT attribute set.
>
> Use evsel__do_check_stype(..) to check this field, as it's done with
> other fields such as "phys_addr".
>
> Before:
>
> $ perf record -e arm_spe_0// -- sleep 1
> $ perf script -F event,ip,weight
> Samples for 'dummy:u' event do not have WEIGHT attribute set. Cannot print 'weight' field.
>
> After:
>
> $ perf script -F event,ip,weight
> l1d-access: 12 ffffaf629d4cb320
> tlb-access: 12 ffffaf629d4cb320
> memory: 12 ffffaf629d4cb320
>
> Fixes: b0fde9c6e291 ("perf arm-spe: Add SPE total latency as PERF_SAMPLE_WEIGHT")
> Signed-off-by: German Gomez <german.gomez@xxxxxxx>

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka

> ---
> tools/perf/builtin-script.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
> index 9e032343f..6ce581067 100644
> --- a/tools/perf/builtin-script.c
> +++ b/tools/perf/builtin-script.c
> @@ -463,7 +463,7 @@ static int evsel__check_attr(struct evsel *evsel, struct perf_session *session)
> return -EINVAL;
>
> if (PRINT_FIELD(WEIGHT) &&
> - evsel__check_stype(evsel, PERF_SAMPLE_WEIGHT_TYPE, "WEIGHT", PERF_OUTPUT_WEIGHT))
> + evsel__do_check_stype(evsel, PERF_SAMPLE_WEIGHT_TYPE, "WEIGHT", PERF_OUTPUT_WEIGHT, allow_user_set))
> return -EINVAL;
>
> if (PRINT_FIELD(SYM) &&
> --
> 2.25.1
>