| /* 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 */ | 
 |  | 
 | 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 |