1 /* SPDX-License-Identifier: GPL-2.0 */
3 * definition for store system information stsi
5 * Copyright IBM Corp. 2001, 2008
11 #ifndef __ASM_S390_SYSINFO_H
12 #define __ASM_S390_SYSINFO_H
14 #include <asm/bitsperlong.h>
15 #include <linux/uuid.h>
17 struct sysinfo_1_1_1 {
26 char manufacturer[16];
29 char model_capacity[16];
33 char model_perm_cap[16];
34 char model_temp_cap[16];
35 unsigned int model_cap_rating;
36 unsigned int model_perm_cap_rating;
37 unsigned int model_temp_cap_rating;
38 unsigned char typepct[5];
39 unsigned char reserved_2[3];
44 char model_var_cap[16];
45 unsigned int model_var_cap_rating;
49 struct sysinfo_1_2_1 {
54 unsigned short cpu_address;
57 struct sysinfo_1_2_2 {
60 unsigned short acc_offset;
61 unsigned char mt_installed :1;
63 unsigned char mt_stid :5;
65 unsigned char mt_gtid :5;
67 unsigned int nominal_cap;
68 unsigned int secondary_cap;
69 unsigned int capability;
70 unsigned short cpus_total;
71 unsigned short cpus_configured;
72 unsigned short cpus_standby;
73 unsigned short cpus_reserved;
74 unsigned short adjustment[];
77 struct sysinfo_1_2_2_extension {
78 unsigned int alt_capability;
79 unsigned short alt_adjustment[];
82 struct sysinfo_2_2_1 {
86 unsigned short cpu_id;
87 unsigned short cpu_address;
90 struct sysinfo_2_2_2 {
92 unsigned short lpar_number;
94 unsigned char characteristics;
95 unsigned short cpus_total;
96 unsigned short cpus_configured;
97 unsigned short cpus_standby;
98 unsigned short cpus_reserved;
102 unsigned char mt_installed :1;
104 unsigned char mt_stid :5;
106 unsigned char mt_gtid :5;
108 unsigned char mt_psmtid :5;
110 unsigned short cpus_dedicated;
111 unsigned short cpus_shared;
115 char reserved_5[160];
119 #define LPAR_CHAR_DEDICATED (1 << 7)
120 #define LPAR_CHAR_SHARED (1 << 6)
121 #define LPAR_CHAR_LIMITED (1 << 5)
123 struct sysinfo_3_2_2 {
126 unsigned char count:4;
129 unsigned short cpus_total;
130 unsigned short cpus_configured;
131 unsigned short cpus_standby;
132 unsigned short cpus_reserved;
138 unsigned int reserved_2;
141 char reserved_3[1504];
142 char ext_names[8][256];
145 extern int topology_max_mnest;
148 * Returns the maximum nesting level supported by the cpu topology code.
149 * The current maximum level is 4 which is the drawer level.
151 static inline unsigned char topology_mnest_limit(void)
153 return min(topology_max_mnest, 4);
156 #define TOPOLOGY_NR_MAG 6
158 struct topology_core {
160 unsigned char reserved0[3];
164 unsigned char reserved1;
165 unsigned short origin;
169 struct topology_container {
171 unsigned char reserved[6];
175 union topology_entry {
177 struct topology_core cpu;
178 struct topology_container container;
181 struct sysinfo_15_1_x {
182 unsigned char reserved0[2];
183 unsigned short length;
184 unsigned char mag[TOPOLOGY_NR_MAG];
185 unsigned char reserved1;
187 unsigned char reserved2[4];
188 union topology_entry tle[];
191 int stsi(void *sysinfo, int fc, int sel1, int sel2);
194 * Service level reporting interface.
196 struct service_level {
197 struct list_head list;
198 void (*seq_print)(struct seq_file *, struct service_level *);
201 int register_service_level(struct service_level *);
202 int unregister_service_level(struct service_level *);
204 int sthyi_fill(void *dst, u64 *rc);
205 #endif /* __ASM_S390_SYSINFO_H */