aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/sysinfo.c
diff options
context:
space:
mode:
authorEkaterina Tumanova <tumanova@linux.vnet.ibm.com>2014-10-20 09:24:31 -0400
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-02-09 06:44:11 -0500
commitf3d0bd6c7f07d2be4b429230386d49f1b1b14f1c (patch)
tree9de398898ab458991a2a4cf8a294b92fee54fddd /arch/s390/kernel/sysinfo.c
parentc23f397cc4e440742b2b27690694c9346f638800 (diff)
s390/kernel: Update /proc/sysinfo file with Extended Name and UUID
A new architecture extends STSI 3.2.2 with UUID and long names. KVM will provide the first implementation. This patch adds the additional data fields (Extended Name and UUID) from the 4KB block returned by the STSI 3.2.2 command and reflect this information in the /proc/sysinfo file accordingly. Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/sysinfo.c')
-rw-r--r--arch/s390/kernel/sysinfo.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/arch/s390/kernel/sysinfo.c b/arch/s390/kernel/sysinfo.c
index 811f542b8ed4..cebab77c138c 100644
--- a/arch/s390/kernel/sysinfo.c
+++ b/arch/s390/kernel/sysinfo.c
@@ -196,6 +196,33 @@ static void stsi_2_2_2(struct seq_file *m, struct sysinfo_2_2_2 *info)
196 seq_printf(m, "LPAR CPUs Shared: %d\n", info->cpus_shared); 196 seq_printf(m, "LPAR CPUs Shared: %d\n", info->cpus_shared);
197} 197}
198 198
199static void print_ext_name(struct seq_file *m, int lvl,
200 struct sysinfo_3_2_2 *info)
201{
202 if (info->vm[lvl].ext_name_encoding == 0)
203 return;
204 if (info->ext_names[lvl][0] == 0)
205 return;
206 switch (info->vm[lvl].ext_name_encoding) {
207 case 1: /* EBCDIC */
208 EBCASC(info->ext_names[lvl], sizeof(info->ext_names[lvl]));
209 break;
210 case 2: /* UTF-8 */
211 break;
212 default:
213 return;
214 }
215 seq_printf(m, "VM%02d Extended Name: %-.256s\n", lvl,
216 info->ext_names[lvl]);
217}
218
219static void print_uuid(struct seq_file *m, int i, struct sysinfo_3_2_2 *info)
220{
221 if (!memcmp(&info->vm[i].uuid, &NULL_UUID_BE, sizeof(uuid_be)))
222 return;
223 seq_printf(m, "VM%02d UUID: %pUb\n", i, &info->vm[i].uuid);
224}
225
199static void stsi_3_2_2(struct seq_file *m, struct sysinfo_3_2_2 *info) 226static void stsi_3_2_2(struct seq_file *m, struct sysinfo_3_2_2 *info)
200{ 227{
201 int i; 228 int i;
@@ -213,6 +240,8 @@ static void stsi_3_2_2(struct seq_file *m, struct sysinfo_3_2_2 *info)
213 seq_printf(m, "VM%02d CPUs Configured: %d\n", i, info->vm[i].cpus_configured); 240 seq_printf(m, "VM%02d CPUs Configured: %d\n", i, info->vm[i].cpus_configured);
214 seq_printf(m, "VM%02d CPUs Standby: %d\n", i, info->vm[i].cpus_standby); 241 seq_printf(m, "VM%02d CPUs Standby: %d\n", i, info->vm[i].cpus_standby);
215 seq_printf(m, "VM%02d CPUs Reserved: %d\n", i, info->vm[i].cpus_reserved); 242 seq_printf(m, "VM%02d CPUs Reserved: %d\n", i, info->vm[i].cpus_reserved);
243 print_ext_name(m, i, info);
244 print_uuid(m, i, info);
216 } 245 }
217} 246}
218 247