@@ -1430,8 +1430,10 @@ virHostCPUReadSignature(virArch arch,
1430
1430
g_autofree char * model = NULL ;
1431
1431
g_autofree char * stepping = NULL ;
1432
1432
g_autofree char * revision = NULL ;
1433
+ g_autofree char * proc = NULL ;
1434
+ g_autofree char * facilities = NULL ;
1433
1435
1434
- if (!ARCH_IS_X86 (arch ) && !ARCH_IS_PPC64 (arch ))
1436
+ if (!ARCH_IS_X86 (arch ) && !ARCH_IS_PPC64 (arch ) && ! ARCH_IS_S390 ( arch ) )
1435
1437
return 0 ;
1436
1438
1437
1439
while (fgets (line , lineLen , cpuinfo )) {
@@ -1479,6 +1481,23 @@ virHostCPUReadSignature(virArch arch,
1479
1481
* signature = g_strdup_printf ("%s, rev %s" , name , revision );
1480
1482
return 0 ;
1481
1483
}
1484
+ } else if (ARCH_IS_S390 (arch )) {
1485
+ if (STREQ (parts [0 ], "vendor_id" )) {
1486
+ if (!vendor )
1487
+ vendor = g_steal_pointer (& parts [1 ]);
1488
+ } else if (STREQ (parts [0 ], "processor 0" )) {
1489
+ if (!proc )
1490
+ proc = g_steal_pointer (& parts [1 ]);
1491
+ } else if (STREQ (parts [0 ], "facilities" )) {
1492
+ if (!facilities )
1493
+ facilities = g_steal_pointer (& parts [1 ]);
1494
+ }
1495
+
1496
+ if (vendor && proc && facilities ) {
1497
+ * signature = g_strdup_printf ("%s, %s, facilities: %s" ,
1498
+ vendor , proc , facilities );
1499
+ return 0 ;
1500
+ }
1482
1501
}
1483
1502
}
1484
1503
0 commit comments