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