1 /* 2 * definition for store system information stsi 3 * 4 * Copyright IBM Corp. 2001, 2008 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License (version 2 only) 8 * as published by the Free Software Foundation. 9 * 10 * Author(s): Ulrich Weigand <weigand@de.ibm.com> 11 * Christian Borntraeger <borntraeger@de.ibm.com> 12 */ 13 14 #ifndef __ASM_S390_SYSINFO_H 15 #define __ASM_S390_SYSINFO_H 16 17 #include <asm/bitsperlong.h> 18 #include <linux/uuid.h> 19 20 struct sysinfo_1_1_1 { 21 unsigned char p:1; 22 unsigned char :6; 23 unsigned char t:1; 24 unsigned char :8; 25 unsigned char ccr; 26 unsigned char cai; 27 char reserved_0[28]; 28 char manufacturer[16]; 29 char type[4]; 30 char reserved_1[12]; 31 char model_capacity[16]; 32 char sequence[16]; 33 char plant[4]; 34 char model[16]; 35 char model_perm_cap[16]; 36 char model_temp_cap[16]; 37 unsigned int model_cap_rating; 38 unsigned int model_perm_cap_rating; 39 unsigned int model_temp_cap_rating; 40 unsigned char typepct[5]; 41 unsigned char reserved_2[3]; 42 unsigned int ncr; 43 unsigned int npr; 44 unsigned int ntr; 45 }; 46 47 struct sysinfo_1_2_1 { 48 char reserved_0[80]; 49 char sequence[16]; 50 char plant[4]; 51 char reserved_1[2]; 52 unsigned short cpu_address; 53 }; 54 55 struct sysinfo_1_2_2 { 56 char format; 57 char reserved_0[1]; 58 unsigned short acc_offset; 59 unsigned char mt_installed :1; 60 unsigned char :2; 61 unsigned char mt_stid :5; 62 unsigned char :3; 63 unsigned char mt_gtid :5; 64 char reserved_1[18]; 65 unsigned int nominal_cap; 66 unsigned int secondary_cap; 67 unsigned int capability; 68 unsigned short cpus_total; 69 unsigned short cpus_configured; 70 unsigned short cpus_standby; 71 unsigned short cpus_reserved; 72 unsigned short adjustment[0]; 73 }; 74 75 struct sysinfo_1_2_2_extension { 76 unsigned int alt_capability; 77 unsigned short alt_adjustment[0]; 78 }; 79 80 struct sysinfo_2_2_1 { 81 char reserved_0[80]; 82 char sequence[16]; 83 char plant[4]; 84 unsigned short cpu_id; 85 unsigned short cpu_address; 86 }; 87 88 struct sysinfo_2_2_2 { 89 char reserved_0[32]; 90 unsigned short lpar_number; 91 char reserved_1; 92 unsigned char characteristics; 93 unsigned short cpus_total; 94 unsigned short cpus_configured; 95 unsigned short cpus_standby; 96 unsigned short cpus_reserved; 97 char name[8]; 98 unsigned int caf; 99 char reserved_2[8]; 100 unsigned char mt_installed :1; 101 unsigned char :2; 102 unsigned char mt_stid :5; 103 unsigned char :3; 104 unsigned char mt_gtid :5; 105 unsigned char :3; 106 unsigned char mt_psmtid :5; 107 char reserved_3[5]; 108 unsigned short cpus_dedicated; 109 unsigned short cpus_shared; 110 char reserved_4[3]; 111 unsigned char vsne; 112 uuid_be uuid; 113 char reserved_5[160]; 114 char ext_name[256]; 115 }; 116 117 #define LPAR_CHAR_DEDICATED (1 << 7) 118 #define LPAR_CHAR_SHARED (1 << 6) 119 #define LPAR_CHAR_LIMITED (1 << 5) 120 121 struct sysinfo_3_2_2 { 122 char reserved_0[31]; 123 unsigned char :4; 124 unsigned char count:4; 125 struct { 126 char reserved_0[4]; 127 unsigned short cpus_total; 128 unsigned short cpus_configured; 129 unsigned short cpus_standby; 130 unsigned short cpus_reserved; 131 char name[8]; 132 unsigned int caf; 133 char cpi[16]; 134 char reserved_1[3]; 135 unsigned char evmne; 136 unsigned int reserved_2; 137 uuid_be uuid; 138 } vm[8]; 139 char reserved_3[1504]; 140 char ext_names[8][256]; 141 }; 142 143 extern int topology_max_mnest; 144 145 #define TOPOLOGY_CORE_BITS 64 146 #define TOPOLOGY_NR_MAG 6 147 148 struct topology_core { 149 unsigned char nl; 150 unsigned char reserved0[3]; 151 unsigned char :6; 152 unsigned char pp:2; 153 unsigned char reserved1; 154 unsigned short origin; 155 unsigned long mask[TOPOLOGY_CORE_BITS / BITS_PER_LONG]; 156 }; 157 158 struct topology_container { 159 unsigned char nl; 160 unsigned char reserved[6]; 161 unsigned char id; 162 }; 163 164 union topology_entry { 165 unsigned char nl; 166 struct topology_core cpu; 167 struct topology_container container; 168 }; 169 170 struct sysinfo_15_1_x { 171 unsigned char reserved0[2]; 172 unsigned short length; 173 unsigned char mag[TOPOLOGY_NR_MAG]; 174 unsigned char reserved1; 175 unsigned char mnest; 176 unsigned char reserved2[4]; 177 union topology_entry tle[0]; 178 }; 179 180 int stsi(void *sysinfo, int fc, int sel1, int sel2); 181 182 /* 183 * Service level reporting interface. 184 */ 185 struct service_level { 186 struct list_head list; 187 void (*seq_print)(struct seq_file *, struct service_level *); 188 }; 189 190 int register_service_level(struct service_level *); 191 int unregister_service_level(struct service_level *); 192 193 #endif /* __ASM_S390_SYSINFO_H */ 194