linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: acme@redhat.com, a.p.zijlstra@chello.nl, mingo@elte.hu,
	paulus@samba.org, cjashfor@linux.vnet.ibm.com,
	fweisbec@gmail.com, eranian@google.com
Cc: linux-kernel@vger.kernel.org, Jiri Olsa <jolsa@redhat.com>
Subject: [PATCH 2/6] perf, x86: Filter out undefined events from sysfs events attribute
Date: Mon,  9 Jul 2012 22:37:46 +0200	[thread overview]
Message-ID: <1341866270-4915-3-git-send-email-jolsa@redhat.com> (raw)
In-Reply-To: <1341866270-4915-1-git-send-email-jolsa@redhat.com>

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>
---
 arch/x86/kernel/cpu/perf_event.c |   24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 09452c2..9fb23dd 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -1306,6 +1306,8 @@ static struct attribute_group x86_pmu_format_group = {
 	.attrs = NULL,
 };
 
+static void __init filter_events_group(void);
+
 static int __init init_hw_perf_events(void)
 {
 	struct x86_pmu_quirk *quirk;
@@ -1352,6 +1354,8 @@ static int __init init_hw_perf_events(void)
 	x86_pmu.attr_rdpmc = 1; /* enable userspace RDPMC usage by default */
 	x86_pmu_format_group.attrs = x86_pmu.format_attrs;
 
+	filter_events_group();
+
 	pr_info("... version:                %d\n",     x86_pmu.version);
 	pr_info("... bit width:              %d\n",     x86_pmu.cntval_bits);
 	pr_info("... generic registers:      %d\n",     x86_pmu.num_counters);
@@ -1718,6 +1722,26 @@ static const struct attribute_group *x86_pmu_attr_groups[] = {
 	NULL,
 };
 
+/*
+ * Remove all undefined events (x86_pmu.event_map(id) == 0)
+ * out of events_attr attributes.
+ */
+static void __init filter_events_group(void)
+{
+	int i, j;
+
+	for (i = 0; events_attr[i]; i++) {
+		if (x86_pmu.event_map(i))
+			continue;
+
+		for (j = i; events_attr[j]; j++)
+			events_attr[j] = events_attr[j + 1];
+
+		/* Check the shifted attr. */
+		i--;
+	}
+}
+
 static void x86_pmu_flush_branch_stack(void)
 {
 	if (x86_pmu.flush_branch_stack)
-- 
1.7.10.4


  parent reply	other threads:[~2012-07-09 20:38 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-09 20:37 [PATCHv3 0/6] perf, tool: Allow to use hw events in PMU syntax Jiri Olsa
2012-07-09 20:37 ` [PATCH 1/6] perf, x86: Making hardware events translations available in sysfs Jiri Olsa
2012-08-20  8:25   ` Stephane Eranian
2012-08-20  9:55     ` Jiri Olsa
2012-07-09 20:37 ` Jiri Olsa [this message]
2012-07-09 20:37 ` [PATCH 3/6] perf, tool: Fix pmu object alias initialization Jiri Olsa
2012-07-09 20:37 ` [PATCH 4/6] perf, tool: Properly free format data Jiri Olsa
2012-07-09 20:37 ` [PATCH 5/6] perf, tool: Add support to specify hw event as pmu event term Jiri Olsa
2012-07-09 20:37 ` [PATCH 6/6] perf, test: Add automated tests for pmu sysfs translated events Jiri Olsa
2012-08-08 12:42 ` [PATCHv3 0/6] perf, tool: Allow to use hw events in PMU syntax Jiri Olsa
2012-08-16 13:44   ` Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1341866270-4915-3-git-send-email-jolsa@redhat.com \
    --to=jolsa@redhat.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=cjashfor@linux.vnet.ibm.com \
    --cc=eranian@google.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).