blob: c2ece4dd6c0a5676c9cb92d9a1cf448ead8ff07e [file] [log] [blame]
Christian Borntraegeraa24f7f2008-04-17 07:46:09 +02001/*
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
Heiko Carstensf291e172008-04-30 13:38:35 +020014#ifndef __ASM_S390_SYSINFO_H
15#define __ASM_S390_SYSINFO_H
16
Christian Borntraegeraa24f7f2008-04-17 07:46:09 +020017struct sysinfo_1_1_1 {
Heiko Carstens7aca2ed2010-10-25 16:10:16 +020018 unsigned short :16;
19 unsigned char ccr;
20 unsigned char cai;
21 char reserved_0[28];
Christian Borntraegeraa24f7f2008-04-17 07:46:09 +020022 char manufacturer[16];
23 char type[4];
24 char reserved_1[12];
25 char model_capacity[16];
26 char sequence[16];
27 char plant[4];
28 char model[16];
Martin Schwidefskycbce70e2008-04-17 07:46:10 +020029 char model_perm_cap[16];
30 char model_temp_cap[16];
31 char model_cap_rating[4];
32 char model_perm_cap_rating[4];
33 char model_temp_cap_rating[4];
Christian Borntraegeraa24f7f2008-04-17 07:46:09 +020034};
35
36struct sysinfo_1_2_1 {
37 char reserved_0[80];
38 char sequence[16];
39 char plant[4];
40 char reserved_1[2];
41 unsigned short cpu_address;
42};
43
44struct sysinfo_1_2_2 {
45 char format;
46 char reserved_0[1];
47 unsigned short acc_offset;
48 char reserved_1[24];
49 unsigned int secondary_capability;
50 unsigned int capability;
51 unsigned short cpus_total;
52 unsigned short cpus_configured;
53 unsigned short cpus_standby;
54 unsigned short cpus_reserved;
55 unsigned short adjustment[0];
56};
57
58struct sysinfo_1_2_2_extension {
59 unsigned int alt_capability;
60 unsigned short alt_adjustment[0];
61};
62
63struct sysinfo_2_2_1 {
64 char reserved_0[80];
65 char sequence[16];
66 char plant[4];
67 unsigned short cpu_id;
68 unsigned short cpu_address;
69};
70
71struct sysinfo_2_2_2 {
72 char reserved_0[32];
73 unsigned short lpar_number;
74 char reserved_1;
75 unsigned char characteristics;
76 unsigned short cpus_total;
77 unsigned short cpus_configured;
78 unsigned short cpus_standby;
79 unsigned short cpus_reserved;
80 char name[8];
81 unsigned int caf;
82 char reserved_2[16];
83 unsigned short cpus_dedicated;
84 unsigned short cpus_shared;
85};
86
87#define LPAR_CHAR_DEDICATED (1 << 7)
88#define LPAR_CHAR_SHARED (1 << 6)
89#define LPAR_CHAR_LIMITED (1 << 5)
90
91struct sysinfo_3_2_2 {
92 char reserved_0[31];
Heiko Carstens8387c732010-02-26 22:37:39 +010093 unsigned char :4;
94 unsigned char count:4;
Christian Borntraegeraa24f7f2008-04-17 07:46:09 +020095 struct {
96 char reserved_0[4];
97 unsigned short cpus_total;
98 unsigned short cpus_configured;
99 unsigned short cpus_standby;
100 unsigned short cpus_reserved;
101 char name[8];
102 unsigned int caf;
103 char cpi[16];
104 char reserved_1[24];
105
106 } vm[8];
Christian Borntraeger92e6ecf2009-03-26 15:23:58 +0100107 char reserved_544[3552];
Christian Borntraegeraa24f7f2008-04-17 07:46:09 +0200108};
109
110static inline int stsi(void *sysinfo, int fc, int sel1, int sel2)
111{
112 register int r0 asm("0") = (fc << 28) | sel1;
113 register int r1 asm("1") = sel2;
114
115 asm volatile(
116 " stsi 0(%2)\n"
117 "0: jz 2f\n"
118 "1: lhi %0,%3\n"
119 "2:\n"
120 EX_TABLE(0b, 1b)
121 : "+d" (r0) : "d" (r1), "a" (sysinfo), "K" (-ENOSYS)
122 : "cc", "memory");
123 return r0;
124}
Heiko Carstensf291e172008-04-30 13:38:35 +0200125
Martin Schwidefsky6bcac502008-12-25 13:38:49 +0100126/*
127 * Service level reporting interface.
128 */
129struct service_level {
130 struct list_head list;
131 void (*seq_print)(struct seq_file *, struct service_level *);
132};
133
134int register_service_level(struct service_level *);
135int unregister_service_level(struct service_level *);
136
Heiko Carstensf291e172008-04-30 13:38:35 +0200137#endif /* __ASM_S390_SYSINFO_H */