Commit 25502f00 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

s390/sysinfo: add additional z196 fields to output

Add a couple of missing fields that were introduced with z196.
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 0facaa17
...@@ -17,7 +17,10 @@ ...@@ -17,7 +17,10 @@
#include <asm/bitsperlong.h> #include <asm/bitsperlong.h>
struct sysinfo_1_1_1 { struct sysinfo_1_1_1 {
unsigned short :16; unsigned char p:1;
unsigned char :6;
unsigned char t:1;
unsigned char :8;
unsigned char ccr; unsigned char ccr;
unsigned char cai; unsigned char cai;
char reserved_0[28]; char reserved_0[28];
...@@ -30,9 +33,14 @@ struct sysinfo_1_1_1 { ...@@ -30,9 +33,14 @@ struct sysinfo_1_1_1 {
char model[16]; char model[16];
char model_perm_cap[16]; char model_perm_cap[16];
char model_temp_cap[16]; char model_temp_cap[16];
char model_cap_rating[4]; unsigned int model_cap_rating;
char model_perm_cap_rating[4]; unsigned int model_perm_cap_rating;
char model_temp_cap_rating[4]; unsigned int model_temp_cap_rating;
unsigned char typepct[5];
unsigned char reserved_2[3];
unsigned int ncr;
unsigned int npr;
unsigned int ntr;
}; };
struct sysinfo_1_2_1 { struct sysinfo_1_2_1 {
...@@ -47,8 +55,9 @@ struct sysinfo_1_2_2 { ...@@ -47,8 +55,9 @@ struct sysinfo_1_2_2 {
char format; char format;
char reserved_0[1]; char reserved_0[1];
unsigned short acc_offset; unsigned short acc_offset;
char reserved_1[24]; char reserved_1[20];
unsigned int secondary_capability; unsigned int nominal_cap;
unsigned int secondary_cap;
unsigned int capability; unsigned int capability;
unsigned short cpus_total; unsigned short cpus_total;
unsigned short cpus_configured; unsigned short cpus_configured;
......
...@@ -31,6 +31,8 @@ static inline int stsi_0(void) ...@@ -31,6 +31,8 @@ static inline int stsi_0(void)
static void stsi_1_1_1(struct seq_file *m, struct sysinfo_1_1_1 *info) static void stsi_1_1_1(struct seq_file *m, struct sysinfo_1_1_1 *info)
{ {
int i;
if (stsi(info, 1, 1, 1) == -ENOSYS) if (stsi(info, 1, 1, 1) == -ENOSYS)
return; return;
EBCASC(info->manufacturer, sizeof(info->manufacturer)); EBCASC(info->manufacturer, sizeof(info->manufacturer));
...@@ -57,18 +59,31 @@ static void stsi_1_1_1(struct seq_file *m, struct sysinfo_1_1_1 *info) ...@@ -57,18 +59,31 @@ static void stsi_1_1_1(struct seq_file *m, struct sysinfo_1_1_1 *info)
seq_printf(m, "Sequence Code: %-16.16s\n", info->sequence); seq_printf(m, "Sequence Code: %-16.16s\n", info->sequence);
seq_printf(m, "Plant: %-4.4s\n", info->plant); seq_printf(m, "Plant: %-4.4s\n", info->plant);
seq_printf(m, "Model Capacity: %-16.16s %08u\n", seq_printf(m, "Model Capacity: %-16.16s %08u\n",
info->model_capacity, *(u32 *) info->model_cap_rating); info->model_capacity, info->model_cap_rating);
if (info->model_perm_cap[0] != '\0') if (info->model_perm_cap_rating)
seq_printf(m, "Model Perm. Capacity: %-16.16s %08u\n", seq_printf(m, "Model Perm. Capacity: %-16.16s %08u\n",
info->model_perm_cap, info->model_perm_cap,
*(u32 *) info->model_perm_cap_rating); info->model_perm_cap_rating);
if (info->model_temp_cap[0] != '\0') if (info->model_temp_cap_rating)
seq_printf(m, "Model Temp. Capacity: %-16.16s %08u\n", seq_printf(m, "Model Temp. Capacity: %-16.16s %08u\n",
info->model_temp_cap, info->model_temp_cap,
*(u32 *) info->model_temp_cap_rating); info->model_temp_cap_rating);
if (info->ncr)
seq_printf(m, "Nominal Cap. Rating: %08u\n", info->ncr);
if (info->npr)
seq_printf(m, "Nominal Perm. Rating: %08u\n", info->npr);
if (info->ntr)
seq_printf(m, "Nominal Temp. Rating: %08u\n", info->ntr);
if (info->cai) { if (info->cai) {
seq_printf(m, "Capacity Adj. Ind.: %d\n", info->cai); seq_printf(m, "Capacity Adj. Ind.: %d\n", info->cai);
seq_printf(m, "Capacity Ch. Reason: %d\n", info->ccr); seq_printf(m, "Capacity Ch. Reason: %d\n", info->ccr);
seq_printf(m, "Capacity Transient: %d\n", info->t);
}
if (info->p) {
for (i = 1; i <= ARRAY_SIZE(info->typepct); i++) {
seq_printf(m, "Type %d Percentage: %d\n",
i, info->typepct[i - 1]);
}
} }
} }
...@@ -128,6 +143,10 @@ static void stsi_1_2_2(struct seq_file *m, struct sysinfo_1_2_2 *info) ...@@ -128,6 +143,10 @@ static void stsi_1_2_2(struct seq_file *m, struct sysinfo_1_2_2 *info)
if (info->format == 1) if (info->format == 1)
seq_printf(m, " %u", ext->alt_capability); seq_printf(m, " %u", ext->alt_capability);
seq_putc(m, '\n'); seq_putc(m, '\n');
if (info->nominal_cap)
seq_printf(m, "Nominal Capability: %d\n", info->nominal_cap);
if (info->secondary_cap)
seq_printf(m, "Secondary Capability: %d\n", info->secondary_cap);
for (i = 2; i <= info->cpus_total; i++) { for (i = 2; i <= info->cpus_total; i++) {
seq_printf(m, "Adjustment %02d-way: %u", seq_printf(m, "Adjustment %02d-way: %u",
i, info->adjustment[i-2]); i, info->adjustment[i-2]);
...@@ -135,9 +154,6 @@ static void stsi_1_2_2(struct seq_file *m, struct sysinfo_1_2_2 *info) ...@@ -135,9 +154,6 @@ static void stsi_1_2_2(struct seq_file *m, struct sysinfo_1_2_2 *info)
seq_printf(m, " %u", ext->alt_adjustment[i-2]); seq_printf(m, " %u", ext->alt_adjustment[i-2]);
seq_putc(m, '\n'); seq_putc(m, '\n');
} }
if (info->secondary_capability)
seq_printf(m, "Secondary Capability: %d\n",
info->secondary_capability);
} }
static void stsi_2_2_2(struct seq_file *m, struct sysinfo_2_2_2 *info) static void stsi_2_2_2(struct seq_file *m, struct sysinfo_2_2_2 *info)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment