xref: /kvm-unit-tests/s390x/sthyi.h (revision eb5a1bbab00619256b76177e7a88cfe05834b026)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * STHYI related flags and structure definitions.
4  *
5  * Copyright 2018 IBM Corp.
6  *
7  * Authors:
8  *    Janosch Frank <frankja@linux.vnet.ibm.com>
9  */
10 #ifndef S390X_STHYI_H
11 #define S390X_STHYI_H
12 
13 #include <stdint.h>
14 
15 enum sthyi_rtn_code {
16 	CODE_UNSUPP = 0x04, /* with cc = 3 */
17 	CODE_SUCCES = 0x00, /* with cc = 0 */
18 };
19 
20 enum sthyi_hdr_flags {
21 	HDR_PERF_UNAV  = 0x80,
22 	HDR_STSI_UNAV  = 0x40,
23 	HDR_STACK_INCM = 0x20,
24 	HDR_NOT_LPAR   = 0x10,
25 };
26 
27 enum sthyi_mach_validity {
28 	MACH_CNT_VLD  = 0x80,
29 	MACH_ID_VLD   = 0x40,
30 	MACH_NAME_VLD = 0x20,
31 };
32 
33 enum sthyi_par_flag {
34 	PART_MT_EN = 0x80,
35 };
36 
37 enum sthyi_par_validity {
38 	PART_CNT_VLD  = 0x80,
39 	PART_WGHT_CAP = 0x40,
40 	PART_ABS_CAP  = 0x20,
41 	PART_STSI_SUC = 0x10,
42 	PART_GRP_VLD  = 0x08,
43 };
44 
45 struct sthyi_hdr_sctn {
46 	uint8_t INFHFLG1;
47 	uint8_t INFHFLG2; /* reserved */
48 	uint8_t INFHVAL1; /* reserved */
49 	uint8_t INFHVAL2; /* reserved */
50 	uint8_t reserved[3];
51 	uint8_t INFHYGCT;
52 	uint16_t INFHTOTL;
53 	uint16_t INFHDLN;
54 	uint16_t INFMOFF;
55 	uint16_t INFMLEN;
56 	uint16_t INFPOFF;
57 	uint16_t INFPLEN;
58 	uint16_t INFHOFF1;
59 	uint16_t INFHLEN1;
60 	uint16_t INFGOFF1;
61 	uint16_t INFGLEN1;
62 	uint16_t INFHOFF2;
63 	uint16_t INFHLEN2;
64 	uint16_t INFGOFF2;
65 	uint16_t INFGLEN2;
66 	uint16_t INFHOFF3;
67 	uint16_t INFHLEN3;
68 	uint16_t INFGOFF3;
69 	uint16_t INFGLEN3;
70 	uint8_t reserved2[4];
71 } __attribute__((packed));
72 
73 struct sthyi_mach_sctn {
74 	uint8_t INFMFLG1; /* reserved */
75 	uint8_t INFMFLG2; /* reserved */
76 	uint8_t INFMVAL1;
77 	uint8_t INFMVAL2; /* reserved */
78 	uint16_t INFMSCPS;
79 	uint16_t INFMDCPS;
80 	uint16_t INFMSIFL;
81 	uint16_t INFMDIFL;
82 	char INFMNAME[8];
83 	char INFMTYPE[4];
84 	char INFMMANU[16];
85 	char INFMSEQ[16];
86 	char INFMPMAN[4];
87 	uint8_t reserved[4];
88 } __attribute__((packed));
89 
90 struct sthyi_par_sctn {
91 	uint8_t INFPFLG1;
92 	uint8_t INFPFLG2; /* reserved */
93 	uint8_t INFPVAL1;
94 	uint8_t INFPVAL2; /* reserved */
95 	uint16_t INFPPNUM;
96 	uint16_t INFPSCPS;
97 	uint16_t INFPDCPS;
98 	uint16_t INFPSIFL;
99 	uint16_t INFPDIFL;
100 	uint16_t reserved;
101 	char INFPPNAM[8];
102 	uint32_t INFPWBCP;
103 	uint32_t INFPABCP;
104 	uint32_t INFPWBIF;
105 	uint32_t INFPABIF;
106 } __attribute__((packed));
107 
108 struct sthyi_par_sctn_ext {
109 	uint8_t INFPFLG1;
110 	uint8_t INFPFLG2; /* reserved */
111 	uint8_t INFPVAL1;
112 	uint8_t INFPVAL2; /* reserved */
113 	uint16_t INFPPNUM;
114 	uint16_t INFPSCPS;
115 	uint16_t INFPDCPS;
116 	uint16_t INFPSIFL;
117 	uint16_t INFPDIFL;
118 	uint16_t reserved;
119 	char INFPPNAM[8];
120 	uint32_t INFPWBCP;
121 	uint32_t INFPABCP;
122 	uint32_t INFPWBIF;
123 	uint32_t INFPABIF;
124 	char INFPLGNM[8];
125 	uint32_t INFPLGCP;
126 	uint32_t INFPLGIF;
127 } __attribute__((packed));
128 
129 #endif
130