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 1/6] perf, x86: Making hardware events tranlations sysfs available
Date: Thu, 14 Jun 2012 22:38:36 +0200 [thread overview]
Message-ID: <1339706321-8802-2-git-send-email-jolsa@redhat.com> (raw)
In-Reply-To: <1339706321-8802-1-git-send-email-jolsa@redhat.com>
Making hardware events tranlations available throught the sysfs.
Adding 'events' group attribute under the sysfs x86 PMU record
with attribute/file for each hardware event:
# ls /sys/devices/cpu/events/
branch_instructions
branch_misses
bus_cycles
cache_misses
cache_references
cycles
instructions
ref_cycles
stalled_cycles_backend
stalled_cycles_frontend
The file - ID mappings is:
file hw id
----------------------------------------------------------------
cycles PERF_COUNT_HW_CPU_CYCLES
instructions PERF_COUNT_HW_INSTRUCTIONS
cache_references PERF_COUNT_HW_CACHE_REFERENCES
cache_misses PERF_COUNT_HW_CACHE_MISSES
branch_instructions PERF_COUNT_HW_BRANCH_INSTRUCTIONS
branch_misses PERF_COUNT_HW_BRANCH_MISSES
bus_cycles PERF_COUNT_HW_BUS_CYCLES
stalled_cycles_frontend PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
stalled_cycles_backend PERF_COUNT_HW_STALLED_CYCLES_BACKEND
ref_cycles PERF_COUNT_HW_REF_CPU_CYCLES
Each attribute/file contains HW ID event translation for the currently
running CPU model
# cat /sys/devices/cpu/events/instructions
0xc0
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
---
arch/x86/kernel/cpu/perf_event.c | 44 ++++++++++++++++++++++++++++++++++++++
1 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 53cc997..aaa8d85 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -1666,9 +1666,53 @@ static struct attribute_group x86_pmu_attr_group = {
.attrs = x86_pmu_attrs,
};
+#define PMU_EVENTS_ATTR(_name, _id) \
+static ssize_t \
+_name##_show(struct device *dev, \
+ struct device_attribute *attr, \
+ char *page) \
+{ \
+ u64 val = x86_pmu.event_map(_id); \
+ BUILD_BUG_ON(_id >= PERF_COUNT_HW_MAX); \
+ return sprintf(page, "0x%llx\n", val); \
+} \
+ \
+static struct device_attribute event_attr_##_name = __ATTR_RO(_name)
+
+PMU_EVENTS_ATTR(cycles, PERF_COUNT_HW_CPU_CYCLES);
+PMU_EVENTS_ATTR(instructions, PERF_COUNT_HW_INSTRUCTIONS);
+PMU_EVENTS_ATTR(cache_references, PERF_COUNT_HW_CACHE_REFERENCES);
+PMU_EVENTS_ATTR(cache_misses, PERF_COUNT_HW_CACHE_MISSES);
+PMU_EVENTS_ATTR(branch_instructions, PERF_COUNT_HW_BRANCH_INSTRUCTIONS);
+PMU_EVENTS_ATTR(branch_misses, PERF_COUNT_HW_BRANCH_MISSES);
+PMU_EVENTS_ATTR(bus_cycles, PERF_COUNT_HW_BUS_CYCLES);
+PMU_EVENTS_ATTR(stalled_cycles_frontend, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND);
+PMU_EVENTS_ATTR(stalled_cycles_backend, PERF_COUNT_HW_STALLED_CYCLES_BACKEND);
+PMU_EVENTS_ATTR(ref_cycles, PERF_COUNT_HW_REF_CPU_CYCLES);
+
+static struct attribute *events_attr[] = {
+ &event_attr_cycles.attr,
+ &event_attr_instructions.attr,
+ &event_attr_cache_references.attr,
+ &event_attr_cache_misses.attr,
+ &event_attr_branch_instructions.attr,
+ &event_attr_branch_misses.attr,
+ &event_attr_bus_cycles.attr,
+ &event_attr_stalled_cycles_frontend.attr,
+ &event_attr_stalled_cycles_backend.attr,
+ &event_attr_ref_cycles.attr,
+ NULL,
+};
+
+static struct attribute_group x86_pmu_events_group = {
+ .name = "events",
+ .attrs = events_attr,
+};
+
static const struct attribute_group *x86_pmu_attr_groups[] = {
&x86_pmu_attr_group,
&x86_pmu_format_group,
+ &x86_pmu_events_group,
NULL,
};
--
1.7.7.6
next prev parent reply other threads:[~2012-06-14 20:39 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-14 20:38 [RFC 0/6] perf, tool: Allow to use hw events in PMU syntax Jiri Olsa
2012-06-14 20:38 ` Jiri Olsa [this message]
2012-06-14 21:09 ` [PATCH 1/6] perf, x86: Making hardware events tranlations sysfs available Peter Zijlstra
2012-06-14 21:36 ` Stephane Eranian
2012-06-15 7:29 ` Jiri Olsa
2012-06-15 7:32 ` Stephane Eranian
2012-06-15 7:43 ` Jiri Olsa
2012-06-15 7:46 ` Stephane Eranian
2012-06-15 9:26 ` Peter Zijlstra
2012-06-14 20:38 ` [PATCH 2/6] perf tools: Fix generation of pmu list Jiri Olsa
2012-07-06 10:58 ` [tip:perf/core] " tip-bot for Robert Richter
2012-06-14 20:38 ` [PATCH 3/6] perf, tool: Properly free format data Jiri Olsa
2012-06-14 20:38 ` [PATCH 4/6] perf, tool: Add events support for pmu Jiri Olsa
2012-06-29 16:36 ` Arnaldo Carvalho de Melo
2012-06-29 16:43 ` Jiri Olsa
2012-06-14 20:38 ` [PATCH 5/6] perf, tool: event parsing - split PE_VALUE_SYM to SW and HW tokens Jiri Olsa
2012-06-14 20:38 ` [PATCH 6/6] perf, tool: Support translate terms for hw events 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=1339706321-8802-2-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.