]>
Commit | Line | Data |
---|---|---|
0b73214f | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
aa24f7f0 CB |
2 | /* |
3 | * definition for store system information stsi | |
4 | * | |
a53c8fab | 5 | * Copyright IBM Corp. 2001, 2008 |
aa24f7f0 | 6 | * |
aa24f7f0 CB |
7 | * Author(s): Ulrich Weigand <weigand@de.ibm.com> |
8 | * Christian Borntraeger <borntraeger@de.ibm.com> | |
9 | */ | |
10 | ||
f291e172 HC |
11 | #ifndef __ASM_S390_SYSINFO_H |
12 | #define __ASM_S390_SYSINFO_H | |
13 | ||
c30f91b6 | 14 | #include <asm/bitsperlong.h> |
f3d0bd6c | 15 | #include <linux/uuid.h> |
c30f91b6 | 16 | |
aa24f7f0 | 17 | struct sysinfo_1_1_1 { |
25502f00 HC |
18 | unsigned char p:1; |
19 | unsigned char :6; | |
20 | unsigned char t:1; | |
21 | unsigned char :8; | |
7aca2eda HC |
22 | unsigned char ccr; |
23 | unsigned char cai; | |
24 | char reserved_0[28]; | |
aa24f7f0 CB |
25 | char manufacturer[16]; |
26 | char type[4]; | |
27 | char reserved_1[12]; | |
28 | char model_capacity[16]; | |
29 | char sequence[16]; | |
30 | char plant[4]; | |
31 | char model[16]; | |
cbce70e6 MS |
32 | char model_perm_cap[16]; |
33 | char model_temp_cap[16]; | |
25502f00 HC |
34 | unsigned int model_cap_rating; |
35 | unsigned int model_perm_cap_rating; | |
36 | unsigned int model_temp_cap_rating; | |
37 | unsigned char typepct[5]; | |
38 | unsigned char reserved_2[3]; | |
39 | unsigned int ncr; | |
40 | unsigned int npr; | |
41 | unsigned int ntr; | |
aa24f7f0 CB |
42 | }; |
43 | ||
44 | struct sysinfo_1_2_1 { | |
45 | char reserved_0[80]; | |
46 | char sequence[16]; | |
47 | char plant[4]; | |
48 | char reserved_1[2]; | |
49 | unsigned short cpu_address; | |
50 | }; | |
51 | ||
52 | struct sysinfo_1_2_2 { | |
53 | char format; | |
54 | char reserved_0[1]; | |
55 | unsigned short acc_offset; | |
7022ec49 HC |
56 | unsigned char mt_installed :1; |
57 | unsigned char :2; | |
58 | unsigned char mt_stid :5; | |
59 | unsigned char :3; | |
60 | unsigned char mt_gtid :5; | |
61 | char reserved_1[18]; | |
25502f00 HC |
62 | unsigned int nominal_cap; |
63 | unsigned int secondary_cap; | |
aa24f7f0 CB |
64 | unsigned int capability; |
65 | unsigned short cpus_total; | |
66 | unsigned short cpus_configured; | |
67 | unsigned short cpus_standby; | |
68 | unsigned short cpus_reserved; | |
69 | unsigned short adjustment[0]; | |
70 | }; | |
71 | ||
72 | struct sysinfo_1_2_2_extension { | |
73 | unsigned int alt_capability; | |
74 | unsigned short alt_adjustment[0]; | |
75 | }; | |
76 | ||
77 | struct sysinfo_2_2_1 { | |
78 | char reserved_0[80]; | |
79 | char sequence[16]; | |
80 | char plant[4]; | |
81 | unsigned short cpu_id; | |
82 | unsigned short cpu_address; | |
83 | }; | |
84 | ||
85 | struct sysinfo_2_2_2 { | |
86 | char reserved_0[32]; | |
87 | unsigned short lpar_number; | |
88 | char reserved_1; | |
89 | unsigned char characteristics; | |
90 | unsigned short cpus_total; | |
91 | unsigned short cpus_configured; | |
92 | unsigned short cpus_standby; | |
93 | unsigned short cpus_reserved; | |
94 | char name[8]; | |
95 | unsigned int caf; | |
10ad34bc | 96 | char reserved_2[8]; |
7022ec49 HC |
97 | unsigned char mt_installed :1; |
98 | unsigned char :2; | |
99 | unsigned char mt_stid :5; | |
100 | unsigned char :3; | |
101 | unsigned char mt_gtid :5; | |
102 | unsigned char :3; | |
103 | unsigned char mt_psmtid :5; | |
10ad34bc | 104 | char reserved_3[5]; |
aa24f7f0 CB |
105 | unsigned short cpus_dedicated; |
106 | unsigned short cpus_shared; | |
e32eae10 VM |
107 | char reserved_4[3]; |
108 | unsigned char vsne; | |
e64e17a5 | 109 | uuid_t uuid; |
e32eae10 VM |
110 | char reserved_5[160]; |
111 | char ext_name[256]; | |
aa24f7f0 CB |
112 | }; |
113 | ||
114 | #define LPAR_CHAR_DEDICATED (1 << 7) | |
115 | #define LPAR_CHAR_SHARED (1 << 6) | |
116 | #define LPAR_CHAR_LIMITED (1 << 5) | |
117 | ||
118 | struct sysinfo_3_2_2 { | |
119 | char reserved_0[31]; | |
8387c736 HC |
120 | unsigned char :4; |
121 | unsigned char count:4; | |
aa24f7f0 CB |
122 | struct { |
123 | char reserved_0[4]; | |
124 | unsigned short cpus_total; | |
125 | unsigned short cpus_configured; | |
126 | unsigned short cpus_standby; | |
127 | unsigned short cpus_reserved; | |
128 | char name[8]; | |
129 | unsigned int caf; | |
130 | char cpi[16]; | |
f3d0bd6c | 131 | char reserved_1[3]; |
e32eae10 | 132 | unsigned char evmne; |
f3d0bd6c | 133 | unsigned int reserved_2; |
e64e17a5 | 134 | uuid_t uuid; |
aa24f7f0 | 135 | } vm[8]; |
f3d0bd6c ET |
136 | char reserved_3[1504]; |
137 | char ext_names[8][256]; | |
aa24f7f0 CB |
138 | }; |
139 | ||
fade4dc4 HC |
140 | extern int topology_max_mnest; |
141 | ||
ae5ca67a HC |
142 | /* |
143 | * Returns the maximum nesting level supported by the cpu topology code. | |
144 | * The current maximum level is 4 which is the drawer level. | |
145 | */ | |
80ba3846 | 146 | static inline unsigned char topology_mnest_limit(void) |
ae5ca67a HC |
147 | { |
148 | return min(topology_max_mnest, 4); | |
149 | } | |
150 | ||
c30f91b6 HC |
151 | #define TOPOLOGY_NR_MAG 6 |
152 | ||
10ad34bc MS |
153 | struct topology_core { |
154 | unsigned char nl; | |
155 | unsigned char reserved0[3]; | |
1887aa07 MS |
156 | unsigned char :5; |
157 | unsigned char d:1; | |
c30f91b6 HC |
158 | unsigned char pp:2; |
159 | unsigned char reserved1; | |
160 | unsigned short origin; | |
251ea0ca | 161 | unsigned long mask; |
c30f91b6 HC |
162 | }; |
163 | ||
164 | struct topology_container { | |
10ad34bc MS |
165 | unsigned char nl; |
166 | unsigned char reserved[6]; | |
c30f91b6 HC |
167 | unsigned char id; |
168 | }; | |
169 | ||
170 | union topology_entry { | |
171 | unsigned char nl; | |
10ad34bc | 172 | struct topology_core cpu; |
c30f91b6 HC |
173 | struct topology_container container; |
174 | }; | |
175 | ||
176 | struct sysinfo_15_1_x { | |
177 | unsigned char reserved0[2]; | |
178 | unsigned short length; | |
179 | unsigned char mag[TOPOLOGY_NR_MAG]; | |
180 | unsigned char reserved1; | |
181 | unsigned char mnest; | |
182 | unsigned char reserved2[4]; | |
183 | union topology_entry tle[0]; | |
184 | }; | |
185 | ||
caf757c6 | 186 | int stsi(void *sysinfo, int fc, int sel1, int sel2); |
f291e172 | 187 | |
6bcac508 MS |
188 | /* |
189 | * Service level reporting interface. | |
190 | */ | |
191 | struct service_level { | |
192 | struct list_head list; | |
193 | void (*seq_print)(struct seq_file *, struct service_level *); | |
194 | }; | |
195 | ||
196 | int register_service_level(struct service_level *); | |
197 | int unregister_service_level(struct service_level *); | |
198 | ||
b7c92f1a | 199 | int sthyi_fill(void *dst, u64 *rc); |
f291e172 | 200 | #endif /* __ASM_S390_SYSINFO_H */ |