s390/cpum_cf: Export event names in sysfs
authorHendrik Brueckner <brueckner@linux.vnet.ibm.com>
Wed, 11 Dec 2013 11:44:40 +0000 (12:44 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 16 Dec 2013 13:37:50 +0000 (14:37 +0100)
Provide PMU event attributes for supported counters and export their symbolic
names to the sysfs "events" directory.

See the /sys/devices/cpum_cf/events/ directory for a list of available counters.
Note that you might require counter set authorizations for the LPAR to use them.

Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/perf_event.h
arch/s390/kernel/Makefile
arch/s390/kernel/perf_cpum_cf.c
arch/s390/kernel/perf_cpum_cf_events.c [new file with mode: 0644]
arch/s390/kernel/perf_event.c

index 1141fb3..3418502 100644 (file)
@@ -1,11 +1,18 @@
 /*
  * Performance event support - s390 specific definitions.
  *
- * Copyright IBM Corp. 2009, 2012
+ * Copyright IBM Corp. 2009, 2013
  * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
  *           Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
  */
 
+#ifndef _ASM_S390_PERF_EVENT_H
+#define _ASM_S390_PERF_EVENT_H
+
+#ifdef CONFIG_64BIT
+
+#include <linux/perf_event.h>
+#include <linux/device.h>
 #include <asm/cpu_mf.h>
 
 /* CPU-measurement counter facility */
 #define PMU_F_RESERVED                 0x1000
 #define PMU_F_ENABLED                  0x2000
 
-#ifdef CONFIG_64BIT
+/* Perf defintions for PMU event attributes in sysfs */
+extern __init const struct attribute_group **cpumf_cf_event_group(void);
+extern ssize_t cpumf_events_sysfs_show(struct device *dev,
+                                      struct device_attribute *attr,
+                                      char *page);
+#define EVENT_VAR(_cat, _name)         event_attr_##_cat##_##_name
+#define EVENT_PTR(_cat, _name)         (&EVENT_VAR(_cat, _name).attr.attr)
+
+#define CPUMF_EVENT_ATTR(cat, name, id)                        \
+       PMU_EVENT_ATTR(name, EVENT_VAR(cat, name), id, cpumf_events_sysfs_show)
+#define CPUMF_EVENT_PTR(cat, name)     EVENT_PTR(cat, name)
+
 
 /* Perf callbacks */
 struct pt_regs;
@@ -24,3 +42,4 @@ extern unsigned long perf_misc_flags(struct pt_regs *regs);
 #define perf_misc_flags(regs) perf_misc_flags(regs)
 
 #endif /* CONFIG_64BIT */
+#endif /* _ASM_S390_PERF_EVENT_H */
Simple merge
Simple merge
Simple merge