linux/arch/s390/include/asm/sysinfo.h
<<
>>
Prefs
   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
  20struct 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
  47struct 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
  55struct 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
  75struct sysinfo_1_2_2_extension {
  76        unsigned int alt_capability;
  77        unsigned short alt_adjustment[0];
  78};
  79
  80struct 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
  88struct 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_t 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
 121struct 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_t uuid;
 138        } vm[8];
 139        char reserved_3[1504];
 140        char ext_names[8][256];
 141};
 142
 143extern int topology_max_mnest;
 144
 145/*
 146 * Returns the maximum nesting level supported by the cpu topology code.
 147 * The current maximum level is 4 which is the drawer level.
 148 */
 149static inline unsigned char topology_mnest_limit(void)
 150{
 151        return min(topology_max_mnest, 4);
 152}
 153
 154#define TOPOLOGY_NR_MAG         6
 155
 156struct topology_core {
 157        unsigned char nl;
 158        unsigned char reserved0[3];
 159        unsigned char :6;
 160        unsigned char pp:2;
 161        unsigned char reserved1;
 162        unsigned short origin;
 163        unsigned long mask;
 164};
 165
 166struct topology_container {
 167        unsigned char nl;
 168        unsigned char reserved[6];
 169        unsigned char id;
 170};
 171
 172union topology_entry {
 173        unsigned char nl;
 174        struct topology_core cpu;
 175        struct topology_container container;
 176};
 177
 178struct sysinfo_15_1_x {
 179        unsigned char reserved0[2];
 180        unsigned short length;
 181        unsigned char mag[TOPOLOGY_NR_MAG];
 182        unsigned char reserved1;
 183        unsigned char mnest;
 184        unsigned char reserved2[4];
 185        union topology_entry tle[0];
 186};
 187
 188int stsi(void *sysinfo, int fc, int sel1, int sel2);
 189
 190/*
 191 * Service level reporting interface.
 192 */
 193struct service_level {
 194        struct list_head list;
 195        void (*seq_print)(struct seq_file *, struct service_level *);
 196};
 197
 198int register_service_level(struct service_level *);
 199int unregister_service_level(struct service_level *);
 200
 201#endif /* __ASM_S390_SYSINFO_H */
 202