Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf pmu: Special case uncore_ prefix

Special case uncore_ prefix in PMU match, to allow for shorter event
uncore specifications.

Before:

perf stat -a -e uncore_cbox/event=0x35,umask=0x1,filter_opc=0x19C/ sleep 1

After

perf stat -a -e cbox/event=0x35,umask=0x1,filter_opc=0x19C/ sleep 1

Committer tests:

# perf list uncore

List of pre-defined events (to be used in -e):

uncore_cbox_0/clockticks/ [Kernel PMU event]
uncore_cbox_1/clockticks/ [Kernel PMU event]
uncore_imc/data_reads/ [Kernel PMU event]
uncore_imc/data_writes/ [Kernel PMU event]

# perf stat -a -e cbox_0/clockticks/ sleep 1

Performance counter stats for 'system wide':

281,474,976,653,084 cbox_0/clockticks/

1.000870129 seconds time elapsed

#

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: http://lkml.kernel.org/r/20170320201711.14142-7-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Andi Kleen and committed by
Arnaldo Carvalho de Melo
a820e335 8255718f

+3
+3
tools/perf/util/parse-events.y
··· 239 239 while ((pmu = perf_pmu__scan(pmu)) != NULL) { 240 240 char *name = pmu->name; 241 241 242 + if (!strncmp(name, "uncore_", 7) && 243 + strncmp($1, "uncore_", 7)) 244 + name += 7; 242 245 if (!strncmp($1, name, strlen($1))) { 243 246 if (parse_events_copy_term_list(orig_terms, &terms)) 244 247 YYABORT;