| From 2fe6575924612f1014a0539ab3053b106aded926 Mon Sep 17 00:00:00 2001 |
| From: Sandipan Das <sandipan.das@amd.com> |
| Date: Fri, 5 May 2023 15:32:53 +0530 |
| Subject: perf script: Skip aggregation for stat events |
| |
| From: Sandipan Das <sandipan.das@amd.com> |
| |
| commit 2fe6575924612f1014a0539ab3053b106aded926 upstream. |
| |
| The script command does not support aggregation modes by itself although |
| that can be achieved using post-processing scripts. Because of this, it |
| does not allocate memory for aggregated event values. |
| |
| Upon running perf stat record, the aggregation mode is set in the perf |
| data file. If the mode is AGGR_GLOBAL, the aggregated event values are |
| accessed and this leads to a segmentation fault since these were never |
| allocated to begin with. Set the mode to AGGR_NONE explicitly to avoid |
| this. |
| |
| E.g. |
| |
| $ perf stat record -e cycles true |
| $ perf script |
| |
| Before: |
| Segmentation fault (core dumped) |
| |
| After: |
| CPU THREAD VAL ENA RUN TIME EVENT |
| -1 231919 162831 362069 362069 935289 cycles:u |
| |
| Fixes: 8b76a3188b85724f ("perf stat: Remove unused perf_counts.aggr field") |
| Signed-off-by: Sandipan Das <sandipan.das@amd.com> |
| Acked-by: Namhyung Kim <namhyung@kernel.org> |
| Cc: Adrian Hunter <adrian.hunter@intel.com> |
| Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> |
| Cc: Ananth Narayan <ananth.narayan@amd.com> |
| Cc: Ian Rogers <irogers@google.com> |
| Cc: Ingo Molnar <mingo@redhat.com> |
| Cc: Jiri Olsa <jolsa@kernel.org> |
| Cc: Mark Rutland <mark.rutland@arm.com> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Cc: Nick Terrell <terrelln@fb.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Ravi Bangoria <ravi.bangoria@amd.com> |
| Cc: stable@vger.kernel.org # v6.2+ |
| Link: https://lore.kernel.org/r/83d6c6c05c54bf00c5a9df32ac160718efca0c7a.1683280603.git.sandipan.das@amd.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| tools/perf/builtin-script.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/tools/perf/builtin-script.c |
| +++ b/tools/perf/builtin-script.c |
| @@ -3652,6 +3652,13 @@ static int process_stat_config_event(str |
| union perf_event *event) |
| { |
| perf_event__read_stat_config(&stat_config, &event->stat_config); |
| + |
| + /* |
| + * Aggregation modes are not used since post-processing scripts are |
| + * supposed to take care of such requirements |
| + */ |
| + stat_config.aggr_mode = AGGR_NONE; |
| + |
| return 0; |
| } |
| |