| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * Support for s390 CPU measurement counter set diagnostic facility | |
| * | |
| * Copyright IBM Corp. 2019 | |
| Author(s): Hendrik Brueckner <brueckner@linux.ibm.com> | |
| * Thomas Richter <tmricht@linux.ibm.com> | |
| */ | |
| #ifndef S390_CPUMCF_KERNEL_H | |
| #define S390_CPUMCF_KERNEL_H | |
| #define S390_CPUMCF_DIAG_DEF 0xfeef /* Counter diagnostic entry ID */ | |
| #define PERF_EVENT_CPUM_CF_DIAG 0xBC000 /* Event: Counter sets */ | |
| #define PERF_EVENT_CPUM_SF_DIAG 0xBD000 /* Event: Combined-sampling */ | |
| #define PERF_EVENT_PAI_CRYPTO_ALL 0x1000 /* Event: CRYPTO_ALL */ | |
| #define PERF_EVENT_PAI_NNPA_ALL 0x1800 /* Event: NNPA_ALL */ | |
| struct cf_ctrset_entry { /* CPU-M CF counter set entry (8 byte) */ | |
| unsigned int def:16; /* 0-15 Data Entry Format */ | |
| unsigned int set:16; /* 16-23 Counter set identifier */ | |
| unsigned int ctr:16; /* 24-39 Number of stored counters */ | |
| unsigned int res1:16; /* 40-63 Reserved */ | |
| }; | |
| struct cf_trailer_entry { /* CPU-M CF trailer for raw traces (64 byte) */ | |
| /* 0 - 7 */ | |
| union { | |
| struct { | |
| unsigned int clock_base:1; /* TOD clock base */ | |
| unsigned int speed:1; /* CPU speed */ | |
| /* Measurement alerts */ | |
| unsigned int mtda:1; /* Loss of MT ctr. data alert */ | |
| unsigned int caca:1; /* Counter auth. change alert */ | |
| unsigned int lcda:1; /* Loss of counter data alert */ | |
| }; | |
| unsigned long flags; /* 0-63 All indicators */ | |
| }; | |
| /* 8 - 15 */ | |
| unsigned int cfvn:16; /* 64-79 Ctr First Version */ | |
| unsigned int csvn:16; /* 80-95 Ctr Second Version */ | |
| unsigned int cpu_speed:32; /* 96-127 CPU speed */ | |
| /* 16 - 23 */ | |
| unsigned long timestamp; /* 128-191 Timestamp (TOD) */ | |
| /* 24 - 55 */ | |
| union { | |
| struct { | |
| unsigned long progusage1; | |
| unsigned long progusage2; | |
| unsigned long progusage3; | |
| unsigned long tod_base; | |
| }; | |
| unsigned long progusage[4]; | |
| }; | |
| /* 56 - 63 */ | |
| unsigned int mach_type:16; /* Machine type */ | |
| unsigned int res1:16; /* Reserved */ | |
| unsigned int res2:32; /* Reserved */ | |
| }; | |
| #define CPUMF_CTR_SET_BASIC 0 /* Basic Counter Set */ | |
| #define CPUMF_CTR_SET_USER 1 /* Problem-State Counter Set */ | |
| #define CPUMF_CTR_SET_CRYPTO 2 /* Crypto-Activity Counter Set */ | |
| #define CPUMF_CTR_SET_EXT 3 /* Extended Counter Set */ | |
| #define CPUMF_CTR_SET_MT_DIAG 4 /* MT-diagnostic Counter Set */ | |
| #endif |