]>
Commit | Line | Data |
---|---|---|
2b1444f2 TR |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* | |
3 | * Auxtrace support for s390 CPU measurement sampling facility | |
4 | * | |
5 | * Copyright IBM Corp. 2018 | |
6 | * Author(s): Hendrik Brueckner <brueckner@linux.ibm.com> | |
7 | * Thomas Richter <tmricht@linux.ibm.com> | |
8 | */ | |
9 | #ifndef S390_CPUMSF_KERNEL_H | |
10 | #define S390_CPUMSF_KERNEL_H | |
11 | ||
12 | #define S390_CPUMSF_PAGESZ 4096 /* Size of sample block units */ | |
13 | #define S390_CPUMSF_DIAG_DEF_FIRST 0x8001 /* Diagnostic entry lowest id */ | |
14 | ||
15 | struct hws_basic_entry { | |
16 | unsigned int def:16; /* 0-15 Data Entry Format */ | |
17 | unsigned int R:4; /* 16-19 reserved */ | |
18 | unsigned int U:4; /* 20-23 Number of unique instruct. */ | |
19 | unsigned int z:2; /* zeros */ | |
20 | unsigned int T:1; /* 26 PSW DAT mode */ | |
21 | unsigned int W:1; /* 27 PSW wait state */ | |
22 | unsigned int P:1; /* 28 PSW Problem state */ | |
23 | unsigned int AS:2; /* 29-30 PSW address-space control */ | |
24 | unsigned int I:1; /* 31 entry valid or invalid */ | |
25 | unsigned int CL:2; /* 32-33 Configuration Level */ | |
26 | unsigned int:14; | |
27 | unsigned int prim_asn:16; /* primary ASN */ | |
28 | unsigned long long ia; /* Instruction Address */ | |
29 | unsigned long long gpp; /* Guest Program Parameter */ | |
30 | unsigned long long hpp; /* Host Program Parameter */ | |
31 | }; | |
32 | ||
33 | struct hws_diag_entry { | |
34 | unsigned int def:16; /* 0-15 Data Entry Format */ | |
35 | unsigned int R:15; /* 16-19 and 20-30 reserved */ | |
36 | unsigned int I:1; /* 31 entry valid or invalid */ | |
37 | u8 data[]; /* Machine-dependent sample data */ | |
38 | }; | |
39 | ||
40 | struct hws_combined_entry { | |
41 | struct hws_basic_entry basic; /* Basic-sampling data entry */ | |
42 | struct hws_diag_entry diag; /* Diagnostic-sampling data entry */ | |
43 | }; | |
44 | ||
45 | struct hws_trailer_entry { | |
46 | union { | |
47 | struct { | |
48 | unsigned int f:1; /* 0 - Block Full Indicator */ | |
49 | unsigned int a:1; /* 1 - Alert request control */ | |
50 | unsigned int t:1; /* 2 - Timestamp format */ | |
51 | unsigned int:29; /* 3 - 31: Reserved */ | |
52 | unsigned int bsdes:16; /* 32-47: size of basic SDE */ | |
53 | unsigned int dsdes:16; /* 48-63: size of diagnostic SDE */ | |
54 | }; | |
55 | unsigned long long flags; /* 0 - 64: All indicators */ | |
56 | }; | |
57 | unsigned long long overflow; /* 64 - sample Overflow count */ | |
58 | unsigned char timestamp[16]; /* 16 - 31 timestamp */ | |
59 | unsigned long long reserved1; /* 32 -Reserved */ | |
60 | unsigned long long reserved2; /* */ | |
61 | union { /* 48 - reserved for programming use */ | |
62 | struct { | |
63 | unsigned long long clock_base:1; /* in progusage2 */ | |
64 | unsigned long long progusage1:63; | |
65 | unsigned long long progusage2; | |
66 | }; | |
67 | unsigned long long progusage[2]; | |
68 | }; | |
69 | }; | |
70 | ||
71 | #endif |