diff options
author | Cody P Schafer <cody@linux.vnet.ibm.com> | 2015-01-30 22:46:01 +0100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2015-02-02 07:56:39 +0100 |
commit | 9e9f60108423f18a99c9cc93ef7f23490ecc709b (patch) | |
tree | 69bcabb2b279dd0d677a162f68d8095523a73953 /arch/powerpc/perf/hv-gpci.h | |
parent | powerpc/perf/hv-24x7: parse catalog and populate sysfs with events (diff) | |
download | linux-9e9f60108423f18a99c9cc93ef7f23490ecc709b.tar.xz linux-9e9f60108423f18a99c9cc93ef7f23490ecc709b.zip |
powerpc/perf/{hv-gpci, hv-common}: generate requests with counters annotated
This adds (in req-gen/) a framework for defining gpci counter requests.
It uses macro magic similar to ftrace.
Also convert the existing hv-gpci request structures and enum values to
use the new framework (and adjust old users of the structs and enum
values to cope with changes in naming).
In exchange for this macro disaster, we get autogenerated event listing
for GPCI in sysfs, build time field offset checking, and zero
duplication of information about GPCI requests.
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-gpci.h')
-rw-r--r-- | arch/powerpc/perf/hv-gpci.h | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/arch/powerpc/perf/hv-gpci.h b/arch/powerpc/perf/hv-gpci.h index b25f460c9cce..86ede8275961 100644 --- a/arch/powerpc/perf/hv-gpci.h +++ b/arch/powerpc/perf/hv-gpci.h @@ -42,32 +42,19 @@ struct hv_get_perf_counter_info_params { */ #define COUNTER_INFO_VERSION_CURRENT 0x8 -/* - * These determine the counter_value[] layout and the meaning of starting_index - * and secondary_index. - * - * Unless otherwise noted, @secondary_index is unused and ignored. - */ -enum counter_info_requests { - - /* GENERAL */ - - /* @starting_index: must be -1 (to refer to the current partition) - */ - CIR_SYSTEM_PERFORMANCE_CAPABILITIES = 0X40, +/* capability mask masks. */ +enum { + HV_GPCI_CM_GA = (1 << 7), + HV_GPCI_CM_EXPANDED = (1 << 6), + HV_GPCI_CM_LAB = (1 << 5) }; -struct cv_system_performance_capabilities { - /* If != 0, allowed to collect data from other partitions */ - __u8 perf_collect_privileged; - - /* These following are only valid if counter_info_version >= 0x3 */ -#define CV_CM_GA (1 << 7) -#define CV_CM_EXPANDED (1 << 6) -#define CV_CM_LAB (1 << 5) - /* remaining bits are reserved */ - __u8 capability_mask; - __u8 reserved[0xE]; -} __packed; +#define REQUEST_FILE "../hv-gpci-requests.h" +#define NAME_LOWER hv_gpci +#define NAME_UPPER HV_GPCI +#include "req-gen/perf.h" +#undef REQUEST_FILE +#undef NAME_LOWER +#undef NAME_UPPER #endif |