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 }; 111 112 #define LPAR_CHAR_DEDICATED (1 << 7) 113 #define LPAR_CHAR_SHARED (1 << 6) 114 #define LPAR_CHAR_LIMITED (1 << 5) 115 116 struct sysinfo_3_2_2 { 117 char reserved_0[31]; 118 unsigned char :4; 119 unsigned char count:4; 120 struct { 121 char reserved_0[4]; 122 unsigned short cpus_total; 123 unsigned short cpus_configured; 124 unsigned short cpus_standby; 125 unsigned short cpus_reserved; 126 char name[8]; 127 unsigned int caf; 128 char cpi[16]; 129 char reserved_1[3]; 130 char ext_name_encoding; 131 unsigned int reserved_2; 132 uuid_be uuid; 133 } vm[8]; 134 char reserved_3[1504]; 135 char ext_names[8][256]; 136 }; 137 138 extern int topology_max_mnest; 139 140 #define TOPOLOGY_CORE_BITS 64 141 #define TOPOLOGY_NR_MAG 6 142 143 struct topology_core { 144 unsigned char nl; 145 unsigned char reserved0[3]; 146 unsigned char :6; 147 unsigned char pp:2; 148 unsigned char reserved1; 149 unsigned short origin; 150 unsigned long mask[TOPOLOGY_CORE_BITS / BITS_PER_LONG]; 151 }; 152 153 struct topology_container { 154 unsigned char nl; 155 unsigned char reserved[6]; 156 unsigned char id; 157 }; 158 159 union topology_entry { 160 unsigned char nl; 161 struct topology_core cpu; 162 struct topology_container container; 163 }; 164 165 struct sysinfo_15_1_x { 166 unsigned char reserved0[2]; 167 unsigned short length; 168 unsigned char mag[TOPOLOGY_NR_MAG]; 169 unsigned char reserved1; 170 unsigned char mnest; 171 unsigned char reserved2[4]; 172 union topology_entry tle[0]; 173 }; 174 175 int stsi(void *sysinfo, int fc, int sel1, int sel2); 176 177 /* 178 * Service level reporting interface. 179 */ 180 struct service_level { 181 struct list_head list; 182 void (*seq_print)(struct seq_file *, struct service_level *); 183 }; 184 185 int register_service_level(struct service_level *); 186 int unregister_service_level(struct service_level *); 187 188 #endif /* __ASM_S390_SYSINFO_H */ 189