perf completion: Support completion of libpfm4 events
authorIan Rogers <irogers@google.com>
Tue, 5 Sep 2023 18:15:53 +0000 (11:15 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 11 Sep 2023 13:26:35 +0000 (10:26 -0300)
Use `perf list --raw-dump pfm` to support completion of libpfm4 events.

Committer testing:

  # grep -m1 'model name' /proc/cpuinfo
  model name : AMD Ryzen 9 5950X 16-Core Processor

Before:

  Files in the current directory are expanded when <tab>

After:

  Only the PFM events are:

  # . tools/perf/perf-completion.sh
  # perf stat --pfm-events <tab>

Becomes:

  # perf stat --pfm-events perf_raw::r0000

As apparently there are no other PFM events for this Ryzen 9 5950X
machine.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: https://lore.kernel.org/r/20230905181554.3202873-2-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/perf-completion.sh

index 40cfc30ad7ad83af095426848f6c1a4d7ace929c..319ad724b97aa57e9847719ef6c4ee6e0f953b04 100644 (file)
@@ -198,6 +198,10 @@ __perf_main ()
                else
                        __perfcomp_colon "$evts" "$cur1"
                fi
+       elif [[ $prev == @("--pfm-events") &&
+               $prev_skip_opts == @(record|stat|top) ]]; then
+               local evts=$($cmd list --raw-dump pfm)
+               __perfcomp "$evts" "$cur"
        else
                # List subcommands for perf commands
                if [[ $prev_skip_opts == @(kvm|kmem|mem|lock|sched|