Skip to content

Commit

Permalink
perf/x86: Filter out undefined events from sysfs events attribute
Browse files Browse the repository at this point in the history
The sysfs events group attribute currently shows all hw events,
including also undefined ones.

This patch filters out all undefined events out of the sysfs events
group attribute, so they don't even show up.

Suggested-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1349873598-12583-3-git-send-email-jolsa@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
  • Loading branch information
Jiri Olsa authored and Ingo Molnar committed Oct 24, 2012
1 parent a474739 commit 8300daa
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions arch/x86/kernel/cpu/perf_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -1321,6 +1321,26 @@ struct perf_pmu_events_attr {
u64 id;
};

/*
* Remove all undefined events (x86_pmu.event_map(id) == 0)
* out of events_attr attributes.
*/
static void __init filter_events(struct attribute **attrs)
{
int i, j;

for (i = 0; attrs[i]; i++) {
if (x86_pmu.event_map(i))
continue;

for (j = i; attrs[j]; j++)
attrs[j] = attrs[j + 1];

/* Check the shifted attr. */
i--;
}
}

ssize_t events_sysfs_show(struct device *dev, struct device_attribute *attr,
char *page)
{
Expand Down Expand Up @@ -1420,6 +1440,8 @@ static int __init init_hw_perf_events(void)

if (!x86_pmu.events_sysfs_show)
x86_pmu_events_group.attrs = &empty_attrs;
else
filter_events(x86_pmu_events_group.attrs);

pr_info("... version: %d\n", x86_pmu.version);
pr_info("... bit width: %d\n", x86_pmu.cntval_bits);
Expand Down

0 comments on commit 8300daa

Please sign in to comment.