linux/arch/s390/include/asm/sysinfo.h
<<
>>
Prefs
   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
  17struct 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
  45struct 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
  53struct 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
  73struct sysinfo_1_2_2_extension {
  74        unsigned int alt_capability;
  75        unsigned short alt_adjustment[0];
  76};
  77
  78struct 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
  86struct 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
 119struct 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
 141extern 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 */
 147static inline unsigned char topology_mnest_limit(void)
 148{
 149        return min(topology_max_mnest, 4);
 150}
 151
 152#define TOPOLOGY_NR_MAG         6
 153
 154struct 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
 165struct topology_container {
 166        unsigned char nl;
 167        unsigned char reserved[6];
 168        unsigned char id;
 169};
 170
 171union topology_entry {
 172        unsigned char nl;
 173        struct topology_core cpu;
 174        struct topology_container container;
 175};
 176
 177struct 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
 187int stsi(void *sysinfo, int fc, int sel1, int sel2);
 188
 189/*
 190 * Service level reporting interface.
 191 */
 192struct service_level {
 193        struct list_head list;
 194        void (*seq_print)(struct seq_file *, struct service_level *);
 195};
 196
 197int register_service_level(struct service_level *);
 198int unregister_service_level(struct service_level *);
 199
 200int sthyi_fill(void *dst, u64 *rc);
 201#endif /* __ASM_S390_SYSINFO_H */
 202