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};
 111
 112#define LPAR_CHAR_DEDICATED     (1 << 7)
 113#define LPAR_CHAR_SHARED        (1 << 6)
 114#define LPAR_CHAR_LIMITED       (1 << 5)
 115
 116struct 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
 138extern int topology_max_mnest;
 139
 140#define TOPOLOGY_CORE_BITS      64
 141#define TOPOLOGY_NR_MAG         6
 142
 143struct 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
 153struct topology_container {
 154        unsigned char nl;
 155        unsigned char reserved[6];
 156        unsigned char id;
 157};
 158
 159union topology_entry {
 160        unsigned char nl;
 161        struct topology_core cpu;
 162        struct topology_container container;
 163};
 164
 165struct 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
 175int stsi(void *sysinfo, int fc, int sel1, int sel2);
 176
 177/*
 178 * Service level reporting interface.
 179 */
 180struct service_level {
 181        struct list_head list;
 182        void (*seq_print)(struct seq_file *, struct service_level *);
 183};
 184
 185int register_service_level(struct service_level *);
 186int unregister_service_level(struct service_level *);
 187
 188#endif /* __ASM_S390_SYSINFO_H */
 189