diff options
author | Cody P Schafer <cody@linux.vnet.ibm.com> | 2015-01-30 13:46:00 -0800 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2015-02-02 17:56:38 +1100 |
commit | 5c5cd7b502595f6b90509b8aa4bba6f81b69315c (patch) | |
tree | 6e7aeb1fd8e31efad78262c1f10ba58b831f06a4 /arch/powerpc/perf/hv-24x7.h | |
parent | e08e52824e41fb42e46593450d378ad1b33caedb (diff) | |
download | linux-5c5cd7b502595f6b90509b8aa4bba6f81b69315c.tar.gz linux-5c5cd7b502595f6b90509b8aa4bba6f81b69315c.tar.bz2 linux-5c5cd7b502595f6b90509b8aa4bba6f81b69315c.zip |
powerpc/perf/hv-24x7: parse catalog and populate sysfs with events
Retrieves and parses the 24x7 catalog on POWER systems that supply it
(right now, only POWER 8). Events are exposed via sysfs in the standard
fashion, and are all parameterized.
$ cd /sys/bus/event_source/devices/hv_24x7/events
$ cat HPM_CS_FROM_L4_LDATA__PHYS_CORE
domain=0x2,offset=0xd58,core=?,lpar=0x0
$ cat HPM_TLBIE__VCPU_HOME_CHIP
domain=0x4,offset=0x358,vcpu=?,lpar=?
where user is required to specify values for the fields with '?' (like
core, vcpu, lpar above), when specifying the event with the perf tool.
Catalog is (at the moment) only parsed on boot. It needs re-parsing
when a some hypervisor events occur. At that point we'll also need to
prevent old events from continuing to function (counter that is passed
in via spare space in the config values?).
Signed-off-by: Cody P Schafer <cody@linux.vnet.ibm.com>
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/perf/hv-24x7.h')
-rw-r--r-- | arch/powerpc/perf/hv-24x7.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/powerpc/perf/hv-24x7.h b/arch/powerpc/perf/hv-24x7.h index 720ebce4b435..69cd4e690f58 100644 --- a/arch/powerpc/perf/hv-24x7.h +++ b/arch/powerpc/perf/hv-24x7.h @@ -3,14 +3,14 @@ #include <linux/types.h> +enum hv_perf_domains { +#define DOMAIN(n, v, x, c) HV_PERF_DOMAIN_##n = v, +#include "hv-24x7-domains.h" +#undef DOMAIN +}; + struct hv_24x7_request { /* PHYSICAL domains require enabling via phyp/hmc. */ -#define HV_24X7_PERF_DOMAIN_PHYSICAL_CHIP 0x01 -#define HV_24X7_PERF_DOMAIN_PHYSICAL_CORE 0x02 -#define HV_24X7_PERF_DOMAIN_VIRTUAL_PROCESSOR_HOME_CORE 0x03 -#define HV_24X7_PERF_DOMAIN_VIRTUAL_PROCESSOR_HOME_CHIP 0x04 -#define HV_24X7_PERF_DOMAIN_VIRTUAL_PROCESSOR_HOME_NODE 0x05 -#define HV_24X7_PERF_DOMAIN_VIRTUAL_PROCESSOR_REMOTE_NODE 0x06 __u8 performance_domain; __u8 reserved[0x1]; |