1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Support for s390 CPU measurement counter set diagnostic facility 4 * 5 * Copyright IBM Corp. 2019 6 Author(s): Hendrik Brueckner <brueckner@linux.ibm.com> 7 * Thomas Richter <tmricht@linux.ibm.com> 8 */ 9 #ifndef S390_CPUMCF_KERNEL_H 10 #define S390_CPUMCF_KERNEL_H 11 12 #define S390_CPUMCF_DIAG_DEF 0xfeef /* Counter diagnostic entry ID */ 13 #define PERF_EVENT_CPUM_CF_DIAG 0xBC000 /* Event: Counter sets */ 14 #define PERF_EVENT_CPUM_SF_DIAG 0xBD000 /* Event: Combined-sampling */ 15 #define PERF_EVENT_PAI_CRYPTO_ALL 0x1000 /* Event: CRYPTO_ALL */ 16 #define PERF_EVENT_PAI_NNPA_ALL 0x1800 /* Event: NNPA_ALL */ 17 18 struct cf_ctrset_entry { /* CPU-M CF counter set entry (8 byte) */ 19 unsigned int def:16; /* 0-15 Data Entry Format */ 20 unsigned int set:16; /* 16-23 Counter set identifier */ 21 unsigned int ctr:16; /* 24-39 Number of stored counters */ 22 unsigned int res1:16; /* 40-63 Reserved */ 23 }; 24 25 struct cf_trailer_entry { /* CPU-M CF trailer for raw traces (64 byte) */ 26 /* 0 - 7 */ 27 union { 28 struct { 29 unsigned int clock_base:1; /* TOD clock base */ 30 unsigned int speed:1; /* CPU speed */ 31 /* Measurement alerts */ 32 unsigned int mtda:1; /* Loss of MT ctr. data alert */ 33 unsigned int caca:1; /* Counter auth. change alert */ 34 unsigned int lcda:1; /* Loss of counter data alert */ 35 }; 36 unsigned long flags; /* 0-63 All indicators */ 37 }; 38 /* 8 - 15 */ 39 unsigned int cfvn:16; /* 64-79 Ctr First Version */ 40 unsigned int csvn:16; /* 80-95 Ctr Second Version */ 41 unsigned int cpu_speed:32; /* 96-127 CPU speed */ 42 /* 16 - 23 */ 43 unsigned long timestamp; /* 128-191 Timestamp (TOD) */ 44 /* 24 - 55 */ 45 union { 46 struct { 47 unsigned long progusage1; 48 unsigned long progusage2; 49 unsigned long progusage3; 50 unsigned long tod_base; 51 }; 52 unsigned long progusage[4]; 53 }; 54 /* 56 - 63 */ 55 unsigned int mach_type:16; /* Machine type */ 56 unsigned int res1:16; /* Reserved */ 57 unsigned int res2:32; /* Reserved */ 58 }; 59 60 #define CPUMF_CTR_SET_BASIC 0 /* Basic Counter Set */ 61 #define CPUMF_CTR_SET_USER 1 /* Problem-State Counter Set */ 62 #define CPUMF_CTR_SET_CRYPTO 2 /* Crypto-Activity Counter Set */ 63 #define CPUMF_CTR_SET_EXT 3 /* Extended Counter Set */ 64 #define CPUMF_CTR_SET_MT_DIAG 4 /* MT-diagnostic Counter Set */ 65 #endif 66