linux_dsm_epyc7002/arch/powerpc/perf/hv-24x7-catalog.h
Cody P Schafer a8b2c43671 powerpc/perf: Add 24x7 interface headers
24x7 (also called hv_24x7 or H_24X7) is an interface to obtain
performance counters from the hypervisor. These counters do not have a
fixed format/possition and are instead documented in a "24x7 Catalog",
which is provided by the hypervisor (that interface is also documented
paritialy in the included hv-24x7-catalog.h and fully in at
https://raw.githubusercontent.com/jmesmon/catalog-24x7/master/hv-24x7-catalog.h ).

The 24x7 data access is simply a copy operation into a 4 dimentional
array of 64bit counters (from hypervisor to kernel memory). There is no
interupt triggered on overflow, these are completely disjoint from the
typical power pmu.

This method of obtaining performance counters from the hypervisor is
intended to paritialy replace the gpci interface.

Signed-off-by: Cody P Schafer <cody@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2014-03-24 09:48:29 +11:00

34 lines
1.0 KiB
C

#ifndef LINUX_POWERPC_PERF_HV_24X7_CATALOG_H_
#define LINUX_POWERPC_PERF_HV_24X7_CATALOG_H_
#include <linux/types.h>
/* From document "24x7 Event and Group Catalog Formats Proposal" v0.15 */
struct hv_24x7_catalog_page_0 {
#define HV_24X7_CATALOG_MAGIC 0x32347837 /* "24x7" in ASCII */
__be32 magic;
__be32 length; /* In 4096 byte pages */
__be64 version; /* XXX: arbitrary? what's the meaning/useage/purpose? */
__u8 build_time_stamp[16]; /* "YYYYMMDDHHMMSS\0\0" */
__u8 reserved2[32];
__be16 schema_data_offs; /* in 4096 byte pages */
__be16 schema_data_len; /* in 4096 byte pages */
__be16 schema_entry_count;
__u8 reserved3[2];
__be16 event_data_offs;
__be16 event_data_len;
__be16 event_entry_count;
__u8 reserved4[2];
__be16 group_data_offs; /* in 4096 byte pages */
__be16 group_data_len; /* in 4096 byte pages */
__be16 group_entry_count;
__u8 reserved5[2];
__be16 formula_data_offs; /* in 4096 byte pages */
__be16 formula_data_len; /* in 4096 byte pages */
__be16 formula_entry_count;
__u8 reserved6[2];
} __packed;
#endif