diff options
author | Jiri Olsa <jolsa@redhat.com> | 2012-10-10 08:53:14 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-10-24 04:41:25 -0400 |
commit | 0bf79d44133de42af01a70a1700b8bb4b6d3fb92 (patch) | |
tree | c3c873e431d4c24def937cf3dd850175abeef3f1 /arch/x86/kernel/cpu/perf_event_intel.c | |
parent | 43c032febde48aabcf6d59f47cdcb7b5debbdc63 (diff) |
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>
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event_intel.c')
-rw-r--r-- | arch/x86/kernel/cpu/perf_event_intel.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c index 6106d3b44aa1..93b9e1181f83 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[] = { | |||
1603 | NULL, | 1603 | NULL, |
1604 | }; | 1604 | }; |
1605 | 1605 | ||
1606 | ssize_t intel_event_sysfs_show(char *page, u64 config) | ||
1607 | { | ||
1608 | u64 event = (config & ARCH_PERFMON_EVENTSEL_EVENT); | ||
1609 | |||
1610 | return x86_event_sysfs_show(page, config, event); | ||
1611 | } | ||
1612 | |||
1606 | static __initconst const struct x86_pmu core_pmu = { | 1613 | static __initconst const struct x86_pmu core_pmu = { |
1607 | .name = "core", | 1614 | .name = "core", |
1608 | .handle_irq = x86_pmu_handle_irq, | 1615 | .handle_irq = x86_pmu_handle_irq, |
@@ -1628,7 +1635,7 @@ static __initconst const struct x86_pmu core_pmu = { | |||
1628 | .event_constraints = intel_core_event_constraints, | 1635 | .event_constraints = intel_core_event_constraints, |
1629 | .guest_get_msrs = core_guest_get_msrs, | 1636 | .guest_get_msrs = core_guest_get_msrs, |
1630 | .format_attrs = intel_arch_formats_attr, | 1637 | .format_attrs = intel_arch_formats_attr, |
1631 | .events_sysfs_show = x86_event_sysfs_show, | 1638 | .events_sysfs_show = intel_event_sysfs_show, |
1632 | }; | 1639 | }; |
1633 | 1640 | ||
1634 | struct intel_shared_regs *allocate_shared_regs(int cpu) | 1641 | struct intel_shared_regs *allocate_shared_regs(int cpu) |
@@ -1767,7 +1774,7 @@ static __initconst const struct x86_pmu intel_pmu = { | |||
1767 | .pebs_aliases = intel_pebs_aliases_core2, | 1774 | .pebs_aliases = intel_pebs_aliases_core2, |
1768 | 1775 | ||
1769 | .format_attrs = intel_arch3_formats_attr, | 1776 | .format_attrs = intel_arch3_formats_attr, |
1770 | .events_sysfs_show = x86_event_sysfs_show, | 1777 | .events_sysfs_show = intel_event_sysfs_show, |
1771 | 1778 | ||
1772 | .cpu_prepare = intel_pmu_cpu_prepare, | 1779 | .cpu_prepare = intel_pmu_cpu_prepare, |
1773 | .cpu_starting = intel_pmu_cpu_starting, | 1780 | .cpu_starting = intel_pmu_cpu_starting, |