root/arch/s390/include/asm/sysinfo.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. topology_mnest_limit

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

/* [<][>][^][v][top][bottom][index][help] */