Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Support for s390 CPU measurement counter set diagnostic facility
0004  *
0005  * Copyright IBM Corp. 2019
0006    Author(s): Hendrik Brueckner <brueckner@linux.ibm.com>
0007  *      Thomas Richter <tmricht@linux.ibm.com>
0008  */
0009 #ifndef S390_CPUMCF_KERNEL_H
0010 #define S390_CPUMCF_KERNEL_H
0011 
0012 #define S390_CPUMCF_DIAG_DEF    0xfeef  /* Counter diagnostic entry ID */
0013 #define PERF_EVENT_CPUM_CF_DIAG 0xBC000 /* Event: Counter sets */
0014 #define PERF_EVENT_CPUM_SF_DIAG 0xBD000 /* Event: Combined-sampling */
0015 
0016 struct cf_ctrset_entry {    /* CPU-M CF counter set entry (8 byte) */
0017     unsigned int def:16;    /* 0-15  Data Entry Format */
0018     unsigned int set:16;    /* 16-23 Counter set identifier */
0019     unsigned int ctr:16;    /* 24-39 Number of stored counters */
0020     unsigned int res1:16;   /* 40-63 Reserved */
0021 };
0022 
0023 struct cf_trailer_entry {   /* CPU-M CF trailer for raw traces (64 byte) */
0024     /* 0 - 7 */
0025     union {
0026         struct {
0027             unsigned int clock_base:1;  /* TOD clock base */
0028             unsigned int speed:1;       /* CPU speed */
0029             /* Measurement alerts */
0030             unsigned int mtda:1;    /* Loss of MT ctr. data alert */
0031             unsigned int caca:1;    /* Counter auth. change alert */
0032             unsigned int lcda:1;    /* Loss of counter data alert */
0033         };
0034         unsigned long flags;        /* 0-63    All indicators */
0035     };
0036     /* 8 - 15 */
0037     unsigned int cfvn:16;           /* 64-79   Ctr First Version */
0038     unsigned int csvn:16;           /* 80-95   Ctr Second Version */
0039     unsigned int cpu_speed:32;      /* 96-127  CPU speed */
0040     /* 16 - 23 */
0041     unsigned long timestamp;        /* 128-191 Timestamp (TOD) */
0042     /* 24 - 55 */
0043     union {
0044         struct {
0045             unsigned long progusage1;
0046             unsigned long progusage2;
0047             unsigned long progusage3;
0048             unsigned long tod_base;
0049         };
0050         unsigned long progusage[4];
0051     };
0052     /* 56 - 63 */
0053     unsigned int mach_type:16;      /* Machine type */
0054     unsigned int res1:16;           /* Reserved */
0055     unsigned int res2:32;           /* Reserved */
0056 };
0057 
0058 #define CPUMF_CTR_SET_BASIC 0   /* Basic Counter Set */
0059 #define CPUMF_CTR_SET_USER  1   /* Problem-State Counter Set */
0060 #define CPUMF_CTR_SET_CRYPTO    2   /* Crypto-Activity Counter Set */
0061 #define CPUMF_CTR_SET_EXT   3   /* Extended Counter Set */
0062 #define CPUMF_CTR_SET_MT_DIAG   4   /* MT-diagnostic Counter Set */
0063 #endif