From: tip-bot for Jiri Olsa <jolsa@redhat.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, eranian@google.com,
paulus@samba.org, hpa@zytor.com, mingo@kernel.org,
torvalds@linux-foundation.org, a.p.zijlstra@chello.nl,
acme@ghostprotocols.net, jolsa@redhat.com, fweisbec@gmail.com,
akpm@linux-foundation.org, tglx@linutronix.de,
cjashfor@linux.vnet.ibm.com
Subject: [tip:perf/core] perf/x86: Add hardware events translations for AMD cpus
Date: Wed, 24 Oct 2012 03:05:35 -0700 [thread overview]
Message-ID: <tip-0bf79d44133de42af01a70a1700b8bb4b6d3fb92@git.kernel.org> (raw)
In-Reply-To: <1349873598-12583-5-git-send-email-jolsa@redhat.com>
Commit-ID: 0bf79d44133de42af01a70a1700b8bb4b6d3fb92
Gitweb: http://git.kernel.org/tip/0bf79d44133de42af01a70a1700b8bb4b6d3fb92
Author: Jiri Olsa <jolsa@redhat.com>
AuthorDate: Wed, 10 Oct 2012 14:53:14 +0200
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Wed, 24 Oct 2012 10:41:25 +0200
perf/x86: Add hardware events translations for AMD cpus
Add support for AMD processors to display 'events' sysfs
directory (/sys/devices/cpu/events/) with hw event translations:
# ls /sys/devices/cpu/events/
branch-instructions
branch-misses
bus-cycles
cache-misses
cache-references
cpu-cycles
instructions
ref-cycles
stalled-cycles-backend
stalled-cycles-frontend
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>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1349873598-12583-5-git-send-email-jolsa@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/kernel/cpu/perf_event.c | 3 +--
arch/x86/kernel/cpu/perf_event.h | 2 +-
arch/x86/kernel/cpu/perf_event_amd.c | 9 +++++++++
arch/x86/kernel/cpu/perf_event_intel.c | 11 +++++++++--
4 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 8a1fa23..0a55ab2 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -1392,9 +1392,8 @@ static struct attribute_group x86_pmu_events_group = {
.attrs = events_attr,
};
-ssize_t x86_event_sysfs_show(char *page, u64 config)
+ssize_t x86_event_sysfs_show(char *page, u64 config, u64 event)
{
- u64 event = (config & ARCH_PERFMON_EVENTSEL_EVENT);
u64 umask = (config & ARCH_PERFMON_EVENTSEL_UMASK) >> 8;
u64 cmask = (config & ARCH_PERFMON_EVENTSEL_CMASK) >> 24;
bool edge = (config & ARCH_PERFMON_EVENTSEL_EDGE);
diff --git a/arch/x86/kernel/cpu/perf_event.h b/arch/x86/kernel/cpu/perf_event.h
index f8aa2f6..21419b9 100644
--- a/arch/x86/kernel/cpu/perf_event.h
+++ b/arch/x86/kernel/cpu/perf_event.h
@@ -538,7 +538,7 @@ static inline void set_linear_ip(struct pt_regs *regs, unsigned long ip)
regs->ip = ip;
}
-ssize_t x86_event_sysfs_show(char *page, u64 config);
+ssize_t x86_event_sysfs_show(char *page, u64 config, u64 event);
#ifdef CONFIG_CPU_SUP_AMD
diff --git a/arch/x86/kernel/cpu/perf_event_amd.c b/arch/x86/kernel/cpu/perf_event_amd.c
index 4528ae7..c93bc4e 100644
--- a/arch/x86/kernel/cpu/perf_event_amd.c
+++ b/arch/x86/kernel/cpu/perf_event_amd.c
@@ -568,6 +568,14 @@ amd_get_event_constraints_f15h(struct cpu_hw_events *cpuc, struct perf_event *ev
}
}
+static ssize_t amd_event_sysfs_show(char *page, u64 config)
+{
+ u64 event = (config & ARCH_PERFMON_EVENTSEL_EVENT) |
+ (config & AMD64_EVENTSEL_EVENT) >> 24;
+
+ return x86_event_sysfs_show(page, config, event);
+}
+
static __initconst const struct x86_pmu amd_pmu = {
.name = "AMD",
.handle_irq = x86_pmu_handle_irq,
@@ -591,6 +599,7 @@ static __initconst const struct x86_pmu amd_pmu = {
.put_event_constraints = amd_put_event_constraints,
.format_attrs = amd_format_attr,
+ .events_sysfs_show = amd_event_sysfs_show,
.cpu_prepare = amd_pmu_cpu_prepare,
.cpu_starting = amd_pmu_cpu_starting,
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
index 6106d3b..93b9e11 100644
--- a/arch/x86/kernel/cpu/perf_event_intel.c
+++ b/arch/x86/kernel/cpu/perf_event_intel.c
@@ -1603,6 +1603,13 @@ static struct attribute *intel_arch_formats_attr[] = {
NULL,
};
+ssize_t intel_event_sysfs_show(char *page, u64 config)
+{
+ u64 event = (config & ARCH_PERFMON_EVENTSEL_EVENT);
+
+ return x86_event_sysfs_show(page, config, event);
+}
+
static __initconst const struct x86_pmu core_pmu = {
.name = "core",
.handle_irq = x86_pmu_handle_irq,
@@ -1628,7 +1635,7 @@ static __initconst const struct x86_pmu core_pmu = {
.event_constraints = intel_core_event_constraints,
.guest_get_msrs = core_guest_get_msrs,
.format_attrs = intel_arch_formats_attr,
- .events_sysfs_show = x86_event_sysfs_show,
+ .events_sysfs_show = intel_event_sysfs_show,
};
struct intel_shared_regs *allocate_shared_regs(int cpu)
@@ -1767,7 +1774,7 @@ static __initconst const struct x86_pmu intel_pmu = {
.pebs_aliases = intel_pebs_aliases_core2,
.format_attrs = intel_arch3_formats_attr,
- .events_sysfs_show = x86_event_sysfs_show,
+ .events_sysfs_show = intel_event_sysfs_show,
.cpu_prepare = intel_pmu_cpu_prepare,
.cpu_starting = intel_pmu_cpu_starting,
next prev parent reply other threads:[~2012-10-24 10:07 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-10 12:53 [PATCHv4 0/8] perf, tool: Allow to use hw events in PMU syntax Jiri Olsa
2012-10-10 12:53 ` [PATCH 1/8] perf x86: Making hardware events translations available in sysfs Jiri Olsa
2012-10-24 10:02 ` [tip:perf/core] perf/x86: Make hardware event " tip-bot for Jiri Olsa
2012-10-10 12:53 ` [PATCH 2/8] perf x86: Filter out undefined events from sysfs events attribute Jiri Olsa
2012-10-24 10:03 ` [tip:perf/core] perf/x86: " tip-bot for Jiri Olsa
2012-10-10 12:53 ` [PATCH 3/8] perf x86: Adding hardware events translations for intel cpus Jiri Olsa
2012-10-24 10:04 ` [tip:perf/core] perf/x86: Add hardware events translations for Intel cpus tip-bot for Jiri Olsa
2012-10-10 12:53 ` [PATCH 4/8] perf x86: Adding hardware events translations for amd cpus Jiri Olsa
2012-10-10 14:11 ` Peter Zijlstra
2012-10-10 14:25 ` Jiri Olsa
2012-10-10 14:38 ` Peter Zijlstra
2012-10-24 10:05 ` tip-bot for Jiri Olsa [this message]
2012-10-10 12:53 ` [PATCH 5/8] perf x86: Adding hardware events translations for p6 cpus Jiri Olsa
2012-10-24 10:06 ` [tip:perf/core] perf/x86: Add hardware events translations for Intel P6 cpus tip-bot for Jiri Olsa
2012-10-10 12:53 ` [PATCH 6/8] perf tools: Fix pmu object alias initialization Jiri Olsa
2012-10-24 10:07 ` [tip:perf/core] perf tools: Fix PMU " tip-bot for Jiri Olsa
2012-10-10 12:53 ` [PATCH 7/8] perf tools: Add support to specify hw event as pmu event term Jiri Olsa
2012-10-24 10:08 ` [tip:perf/core] perf tools: Add support to specify hw event as PMU " tip-bot for Jiri Olsa
2012-10-10 12:53 ` [PATCH 8/8] perf test: Add automated tests for pmu sysfs translated events Jiri Olsa
2012-10-24 10:09 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-10-10 13:34 ` [PATCHv4 0/8] perf, tool: Allow to use hw events in PMU syntax Stephane Eranian
2012-10-10 13:40 ` Jiri Olsa
2012-10-10 13:44 ` Stephane Eranian
2012-10-23 15:05 ` Peter Zijlstra
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=tip-0bf79d44133de42af01a70a1700b8bb4b6d3fb92@git.kernel.org \
--to=jolsa@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@ghostprotocols.net \
--cc=akpm@linux-foundation.org \
--cc=cjashfor@linux.vnet.ibm.com \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=paulus@samba.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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.