[PATCH v2] cpu_s390: Implement getVendorForModel for IBM Z

Thomas Huth posted 1 patch 1 year, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20221125093622.234989-1-thuth@redhat.com
There is a newer version of this series
src/cpu/cpu_s390.c                        |  11 ++
tests/domaincapsdata/qemu_4.2.0.s390x.xml | 144 +++++++++++-----------
tests/domaincapsdata/qemu_5.2.0.s390x.xml | 144 +++++++++++-----------
tests/domaincapsdata/qemu_6.0.0.s390x.xml | 144 +++++++++++-----------
4 files changed, 227 insertions(+), 216 deletions(-)
[PATCH v2] cpu_s390: Implement getVendorForModel for IBM Z
Posted by Thomas Huth 1 year, 5 months ago
When running "virsh domcapabilities" on a s390x host, all the CPU
models show up with vendor='unknown' - which sounds kind of weird
since the vendor of these mainframe CPUs is well known: IBM.
All CPUs starting with either "z" or "gen" match a real mainframe
CPU by IBM, so let's return the string "IBM" for those now.
The only remaining ones are now the artifical "qemu" and "max"
models from QEMU itself, so it should be OK to get an "unknown"
vendor for those two.

Thanks to Boris Fiuczynski for helping with the domaincapsdata!

Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 src/cpu/cpu_s390.c                        |  11 ++
 tests/domaincapsdata/qemu_4.2.0.s390x.xml | 144 +++++++++++-----------
 tests/domaincapsdata/qemu_5.2.0.s390x.xml | 144 +++++++++++-----------
 tests/domaincapsdata/qemu_6.0.0.s390x.xml | 144 +++++++++++-----------
 4 files changed, 227 insertions(+), 216 deletions(-)

diff --git a/src/cpu/cpu_s390.c b/src/cpu/cpu_s390.c
index d908a83928..7416ec6dc5 100644
--- a/src/cpu/cpu_s390.c
+++ b/src/cpu/cpu_s390.c
@@ -109,6 +109,16 @@ virCPUs390ValidateFeatures(virCPUDef *cpu)
 }
 
 
+static const char *
+virCPUs390GetVendorForModel(const char *modelName)
+{
+    if (modelName[0] == 'z' || STREQLEN(modelName, "gen", 3))
+        return "IBM";
+
+    return NULL;
+}
+
+
 struct cpuArchDriver cpuDriverS390 = {
     .name = "s390",
     .arch = archs,
@@ -119,4 +129,5 @@ struct cpuArchDriver cpuDriverS390 = {
     .baseline   = NULL,
     .update     = virCPUs390Update,
     .validateFeatures = virCPUs390ValidateFeatures,
+    .getVendorForModel = virCPUs390GetVendorForModel,
 };
diff --git a/tests/domaincapsdata/qemu_4.2.0.s390x.xml b/tests/domaincapsdata/qemu_4.2.0.s390x.xml
index 4f176e2d37..66841881a1 100644
--- a/tests/domaincapsdata/qemu_4.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.s390x.xml
@@ -83,79 +83,79 @@
       <feature policy='require' name='cmm'/>
     </mode>
     <mode name='custom' supported='yes'>
-      <model usable='yes' vendor='unknown'>z800-base</model>
-      <model usable='yes' vendor='unknown'>z890.2-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.2</model>
-      <model usable='yes' vendor='unknown'>z13.2</model>
-      <model usable='yes' vendor='unknown'>z9BC-base</model>
-      <model usable='yes' vendor='unknown'>z990.5-base</model>
-      <model usable='yes' vendor='unknown'>z890.2</model>
-      <model usable='yes' vendor='unknown'>z890</model>
-      <model usable='yes' vendor='unknown'>z9BC</model>
-      <model usable='yes' vendor='unknown'>z13</model>
-      <model usable='yes' vendor='unknown'>z196</model>
-      <model usable='yes' vendor='unknown'>z13s</model>
-      <model usable='yes' vendor='unknown'>z990.3</model>
-      <model usable='yes' vendor='unknown'>z13s-base</model>
-      <model usable='yes' vendor='unknown'>z9EC</model>
-      <model usable='yes' vendor='unknown'>gen15a</model>
-      <model usable='yes' vendor='unknown'>z14ZR1-base</model>
-      <model usable='yes' vendor='unknown'>z14.2-base</model>
-      <model usable='yes' vendor='unknown'>z900.3-base</model>
-      <model usable='yes' vendor='unknown'>z13.2-base</model>
-      <model usable='yes' vendor='unknown'>z196.2-base</model>
-      <model usable='yes' vendor='unknown'>zBC12-base</model>
-      <model usable='yes' vendor='unknown'>z9BC.2-base</model>
-      <model usable='yes' vendor='unknown'>z900.2-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.3</model>
-      <model usable='yes' vendor='unknown'>zEC12</model>
-      <model usable='yes' vendor='unknown'>z900</model>
-      <model usable='yes' vendor='unknown'>z114-base</model>
-      <model usable='yes' vendor='unknown'>zEC12-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.2</model>
-      <model usable='yes' vendor='unknown'>z10EC-base</model>
-      <model usable='yes' vendor='unknown'>z900.3</model>
-      <model usable='yes' vendor='unknown'>z14ZR1</model>
-      <model usable='yes' vendor='unknown'>z10BC</model>
-      <model usable='yes' vendor='unknown'>z10BC.2-base</model>
-      <model usable='yes' vendor='unknown'>z990.2</model>
-      <model usable='yes' vendor='unknown'>z9BC.2</model>
-      <model usable='yes' vendor='unknown'>z990</model>
-      <model usable='yes' vendor='unknown'>z14</model>
-      <model usable='yes' vendor='unknown'>gen15b-base</model>
-      <model usable='yes' vendor='unknown'>z990.4</model>
+      <model usable='yes' vendor='IBM'>z800-base</model>
+      <model usable='yes' vendor='IBM'>z890.2-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.2</model>
+      <model usable='yes' vendor='IBM'>z13.2</model>
+      <model usable='yes' vendor='IBM'>z9BC-base</model>
+      <model usable='yes' vendor='IBM'>z990.5-base</model>
+      <model usable='yes' vendor='IBM'>z890.2</model>
+      <model usable='yes' vendor='IBM'>z890</model>
+      <model usable='yes' vendor='IBM'>z9BC</model>
+      <model usable='yes' vendor='IBM'>z13</model>
+      <model usable='yes' vendor='IBM'>z196</model>
+      <model usable='yes' vendor='IBM'>z13s</model>
+      <model usable='yes' vendor='IBM'>z990.3</model>
+      <model usable='yes' vendor='IBM'>z13s-base</model>
+      <model usable='yes' vendor='IBM'>z9EC</model>
+      <model usable='yes' vendor='IBM'>gen15a</model>
+      <model usable='yes' vendor='IBM'>z14ZR1-base</model>
+      <model usable='yes' vendor='IBM'>z14.2-base</model>
+      <model usable='yes' vendor='IBM'>z900.3-base</model>
+      <model usable='yes' vendor='IBM'>z13.2-base</model>
+      <model usable='yes' vendor='IBM'>z196.2-base</model>
+      <model usable='yes' vendor='IBM'>zBC12-base</model>
+      <model usable='yes' vendor='IBM'>z9BC.2-base</model>
+      <model usable='yes' vendor='IBM'>z900.2-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.3</model>
+      <model usable='yes' vendor='IBM'>zEC12</model>
+      <model usable='yes' vendor='IBM'>z900</model>
+      <model usable='yes' vendor='IBM'>z114-base</model>
+      <model usable='yes' vendor='IBM'>zEC12-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.2</model>
+      <model usable='yes' vendor='IBM'>z10EC-base</model>
+      <model usable='yes' vendor='IBM'>z900.3</model>
+      <model usable='yes' vendor='IBM'>z14ZR1</model>
+      <model usable='yes' vendor='IBM'>z10BC</model>
+      <model usable='yes' vendor='IBM'>z10BC.2-base</model>
+      <model usable='yes' vendor='IBM'>z990.2</model>
+      <model usable='yes' vendor='IBM'>z9BC.2</model>
+      <model usable='yes' vendor='IBM'>z990</model>
+      <model usable='yes' vendor='IBM'>z14</model>
+      <model usable='yes' vendor='IBM'>gen15b-base</model>
+      <model usable='yes' vendor='IBM'>z990.4</model>
       <model usable='yes' vendor='unknown'>max</model>
-      <model usable='yes' vendor='unknown'>z10EC.2-base</model>
-      <model usable='yes' vendor='unknown'>gen15a-base</model>
-      <model usable='yes' vendor='unknown'>z800</model>
-      <model usable='yes' vendor='unknown'>zEC12.2</model>
-      <model usable='yes' vendor='unknown'>z10EC</model>
-      <model usable='yes' vendor='unknown'>z990.2-base</model>
-      <model usable='yes' vendor='unknown'>z900-base</model>
-      <model usable='yes' vendor='unknown'>z10BC.2</model>
-      <model usable='yes' vendor='unknown'>z9EC-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.3-base</model>
-      <model usable='yes' vendor='unknown'>z114</model>
-      <model usable='yes' vendor='unknown'>z890.3</model>
-      <model usable='yes' vendor='unknown'>z196-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.2-base</model>
-      <model usable='yes' vendor='unknown'>z196.2</model>
-      <model usable='yes' vendor='unknown'>z14.2</model>
-      <model usable='yes' vendor='unknown'>z990-base</model>
-      <model usable='yes' vendor='unknown'>z900.2</model>
-      <model usable='yes' vendor='unknown'>z890-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.3</model>
-      <model usable='yes' vendor='unknown'>z14-base</model>
-      <model usable='yes' vendor='unknown'>z990.4-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.3-base</model>
-      <model usable='yes' vendor='unknown'>z10BC-base</model>
-      <model usable='yes' vendor='unknown'>z13-base</model>
-      <model usable='yes' vendor='unknown'>z990.3-base</model>
-      <model usable='yes' vendor='unknown'>zEC12.2-base</model>
-      <model usable='yes' vendor='unknown'>zBC12</model>
-      <model usable='yes' vendor='unknown'>z890.3-base</model>
-      <model usable='yes' vendor='unknown'>z990.5</model>
-      <model usable='yes' vendor='unknown'>gen15b</model>
+      <model usable='yes' vendor='IBM'>z10EC.2-base</model>
+      <model usable='yes' vendor='IBM'>gen15a-base</model>
+      <model usable='yes' vendor='IBM'>z800</model>
+      <model usable='yes' vendor='IBM'>zEC12.2</model>
+      <model usable='yes' vendor='IBM'>z10EC</model>
+      <model usable='yes' vendor='IBM'>z990.2-base</model>
+      <model usable='yes' vendor='IBM'>z900-base</model>
+      <model usable='yes' vendor='IBM'>z10BC.2</model>
+      <model usable='yes' vendor='IBM'>z9EC-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.3-base</model>
+      <model usable='yes' vendor='IBM'>z114</model>
+      <model usable='yes' vendor='IBM'>z890.3</model>
+      <model usable='yes' vendor='IBM'>z196-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.2-base</model>
+      <model usable='yes' vendor='IBM'>z196.2</model>
+      <model usable='yes' vendor='IBM'>z14.2</model>
+      <model usable='yes' vendor='IBM'>z990-base</model>
+      <model usable='yes' vendor='IBM'>z900.2</model>
+      <model usable='yes' vendor='IBM'>z890-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.3</model>
+      <model usable='yes' vendor='IBM'>z14-base</model>
+      <model usable='yes' vendor='IBM'>z990.4-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.3-base</model>
+      <model usable='yes' vendor='IBM'>z10BC-base</model>
+      <model usable='yes' vendor='IBM'>z13-base</model>
+      <model usable='yes' vendor='IBM'>z990.3-base</model>
+      <model usable='yes' vendor='IBM'>zEC12.2-base</model>
+      <model usable='yes' vendor='IBM'>zBC12</model>
+      <model usable='yes' vendor='IBM'>z890.3-base</model>
+      <model usable='yes' vendor='IBM'>z990.5</model>
+      <model usable='yes' vendor='IBM'>gen15b</model>
       <model usable='no' vendor='unknown'>qemu</model>
     </mode>
   </cpu>
diff --git a/tests/domaincapsdata/qemu_5.2.0.s390x.xml b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
index 760f514d7b..31ddbfbc75 100644
--- a/tests/domaincapsdata/qemu_5.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
@@ -85,79 +85,79 @@
       <feature policy='require' name='cmm'/>
     </mode>
     <mode name='custom' supported='yes'>
-      <model usable='yes' vendor='unknown'>z800-base</model>
-      <model usable='yes' vendor='unknown'>z890.2-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.2</model>
-      <model usable='yes' vendor='unknown'>z13.2</model>
-      <model usable='yes' vendor='unknown'>z990.5-base</model>
-      <model usable='yes' vendor='unknown'>z9BC-base</model>
-      <model usable='yes' vendor='unknown'>z890.2</model>
-      <model usable='yes' vendor='unknown'>z890</model>
-      <model usable='yes' vendor='unknown'>z9BC</model>
-      <model usable='yes' vendor='unknown'>z13</model>
-      <model usable='yes' vendor='unknown'>z196</model>
-      <model usable='yes' vendor='unknown'>z13s</model>
-      <model usable='yes' vendor='unknown'>z990.3</model>
-      <model usable='yes' vendor='unknown'>z13s-base</model>
-      <model usable='yes' vendor='unknown'>z9EC</model>
-      <model usable='yes' vendor='unknown'>gen15a</model>
-      <model usable='yes' vendor='unknown'>z14ZR1-base</model>
-      <model usable='yes' vendor='unknown'>z14.2-base</model>
-      <model usable='yes' vendor='unknown'>z900.3-base</model>
-      <model usable='yes' vendor='unknown'>z13.2-base</model>
-      <model usable='yes' vendor='unknown'>z196.2-base</model>
-      <model usable='yes' vendor='unknown'>zBC12-base</model>
-      <model usable='yes' vendor='unknown'>z9BC.2-base</model>
-      <model usable='yes' vendor='unknown'>z900.2-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.3</model>
-      <model usable='yes' vendor='unknown'>zEC12</model>
-      <model usable='yes' vendor='unknown'>z900</model>
-      <model usable='yes' vendor='unknown'>z114-base</model>
-      <model usable='yes' vendor='unknown'>zEC12-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.2</model>
-      <model usable='yes' vendor='unknown'>z10EC-base</model>
-      <model usable='yes' vendor='unknown'>z900.3</model>
-      <model usable='yes' vendor='unknown'>z14ZR1</model>
-      <model usable='yes' vendor='unknown'>z10BC</model>
-      <model usable='yes' vendor='unknown'>z10BC.2-base</model>
-      <model usable='yes' vendor='unknown'>z9BC.2</model>
-      <model usable='yes' vendor='unknown'>z990</model>
-      <model usable='yes' vendor='unknown'>z990.2</model>
-      <model usable='yes' vendor='unknown'>z14</model>
-      <model usable='yes' vendor='unknown'>gen15b-base</model>
-      <model usable='yes' vendor='unknown'>z990.4</model>
+      <model usable='yes' vendor='IBM'>z800-base</model>
+      <model usable='yes' vendor='IBM'>z890.2-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.2</model>
+      <model usable='yes' vendor='IBM'>z13.2</model>
+      <model usable='yes' vendor='IBM'>z990.5-base</model>
+      <model usable='yes' vendor='IBM'>z9BC-base</model>
+      <model usable='yes' vendor='IBM'>z890.2</model>
+      <model usable='yes' vendor='IBM'>z890</model>
+      <model usable='yes' vendor='IBM'>z9BC</model>
+      <model usable='yes' vendor='IBM'>z13</model>
+      <model usable='yes' vendor='IBM'>z196</model>
+      <model usable='yes' vendor='IBM'>z13s</model>
+      <model usable='yes' vendor='IBM'>z990.3</model>
+      <model usable='yes' vendor='IBM'>z13s-base</model>
+      <model usable='yes' vendor='IBM'>z9EC</model>
+      <model usable='yes' vendor='IBM'>gen15a</model>
+      <model usable='yes' vendor='IBM'>z14ZR1-base</model>
+      <model usable='yes' vendor='IBM'>z14.2-base</model>
+      <model usable='yes' vendor='IBM'>z900.3-base</model>
+      <model usable='yes' vendor='IBM'>z13.2-base</model>
+      <model usable='yes' vendor='IBM'>z196.2-base</model>
+      <model usable='yes' vendor='IBM'>zBC12-base</model>
+      <model usable='yes' vendor='IBM'>z9BC.2-base</model>
+      <model usable='yes' vendor='IBM'>z900.2-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.3</model>
+      <model usable='yes' vendor='IBM'>zEC12</model>
+      <model usable='yes' vendor='IBM'>z900</model>
+      <model usable='yes' vendor='IBM'>z114-base</model>
+      <model usable='yes' vendor='IBM'>zEC12-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.2</model>
+      <model usable='yes' vendor='IBM'>z10EC-base</model>
+      <model usable='yes' vendor='IBM'>z900.3</model>
+      <model usable='yes' vendor='IBM'>z14ZR1</model>
+      <model usable='yes' vendor='IBM'>z10BC</model>
+      <model usable='yes' vendor='IBM'>z10BC.2-base</model>
+      <model usable='yes' vendor='IBM'>z9BC.2</model>
+      <model usable='yes' vendor='IBM'>z990</model>
+      <model usable='yes' vendor='IBM'>z990.2</model>
+      <model usable='yes' vendor='IBM'>z14</model>
+      <model usable='yes' vendor='IBM'>gen15b-base</model>
+      <model usable='yes' vendor='IBM'>z990.4</model>
       <model usable='yes' vendor='unknown'>max</model>
-      <model usable='yes' vendor='unknown'>z990.2-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.2-base</model>
-      <model usable='yes' vendor='unknown'>gen15a-base</model>
-      <model usable='yes' vendor='unknown'>z800</model>
-      <model usable='yes' vendor='unknown'>z10EC</model>
-      <model usable='yes' vendor='unknown'>zEC12.2</model>
-      <model usable='yes' vendor='unknown'>z900-base</model>
-      <model usable='yes' vendor='unknown'>z10BC.2</model>
-      <model usable='yes' vendor='unknown'>z9EC-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.3-base</model>
-      <model usable='yes' vendor='unknown'>z114</model>
-      <model usable='yes' vendor='unknown'>z890.3</model>
-      <model usable='yes' vendor='unknown'>z196-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.2-base</model>
-      <model usable='yes' vendor='unknown'>z196.2</model>
-      <model usable='yes' vendor='unknown'>z14.2</model>
-      <model usable='yes' vendor='unknown'>z990-base</model>
-      <model usable='yes' vendor='unknown'>z900.2</model>
-      <model usable='yes' vendor='unknown'>z10EC.3</model>
-      <model usable='yes' vendor='unknown'>z890-base</model>
-      <model usable='yes' vendor='unknown'>z14-base</model>
-      <model usable='yes' vendor='unknown'>z990.4-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.3-base</model>
-      <model usable='yes' vendor='unknown'>z10BC-base</model>
-      <model usable='yes' vendor='unknown'>z13-base</model>
-      <model usable='yes' vendor='unknown'>z990.3-base</model>
-      <model usable='yes' vendor='unknown'>zEC12.2-base</model>
-      <model usable='yes' vendor='unknown'>zBC12</model>
-      <model usable='yes' vendor='unknown'>z890.3-base</model>
-      <model usable='yes' vendor='unknown'>z990.5</model>
-      <model usable='yes' vendor='unknown'>gen15b</model>
+      <model usable='yes' vendor='IBM'>z990.2-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.2-base</model>
+      <model usable='yes' vendor='IBM'>gen15a-base</model>
+      <model usable='yes' vendor='IBM'>z800</model>
+      <model usable='yes' vendor='IBM'>z10EC</model>
+      <model usable='yes' vendor='IBM'>zEC12.2</model>
+      <model usable='yes' vendor='IBM'>z900-base</model>
+      <model usable='yes' vendor='IBM'>z10BC.2</model>
+      <model usable='yes' vendor='IBM'>z9EC-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.3-base</model>
+      <model usable='yes' vendor='IBM'>z114</model>
+      <model usable='yes' vendor='IBM'>z890.3</model>
+      <model usable='yes' vendor='IBM'>z196-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.2-base</model>
+      <model usable='yes' vendor='IBM'>z196.2</model>
+      <model usable='yes' vendor='IBM'>z14.2</model>
+      <model usable='yes' vendor='IBM'>z990-base</model>
+      <model usable='yes' vendor='IBM'>z900.2</model>
+      <model usable='yes' vendor='IBM'>z10EC.3</model>
+      <model usable='yes' vendor='IBM'>z890-base</model>
+      <model usable='yes' vendor='IBM'>z14-base</model>
+      <model usable='yes' vendor='IBM'>z990.4-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.3-base</model>
+      <model usable='yes' vendor='IBM'>z10BC-base</model>
+      <model usable='yes' vendor='IBM'>z13-base</model>
+      <model usable='yes' vendor='IBM'>z990.3-base</model>
+      <model usable='yes' vendor='IBM'>zEC12.2-base</model>
+      <model usable='yes' vendor='IBM'>zBC12</model>
+      <model usable='yes' vendor='IBM'>z890.3-base</model>
+      <model usable='yes' vendor='IBM'>z990.5</model>
+      <model usable='yes' vendor='IBM'>gen15b</model>
       <model usable='yes' vendor='unknown'>qemu</model>
     </mode>
   </cpu>
diff --git a/tests/domaincapsdata/qemu_6.0.0.s390x.xml b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
index b1968668db..1cb19e051b 100644
--- a/tests/domaincapsdata/qemu_6.0.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
@@ -86,79 +86,79 @@
       <feature policy='require' name='cmm'/>
     </mode>
     <mode name='custom' supported='yes'>
-      <model usable='yes' vendor='unknown'>z800-base</model>
-      <model usable='yes' vendor='unknown'>z890.2-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.2</model>
-      <model usable='yes' vendor='unknown'>z13.2</model>
-      <model usable='yes' vendor='unknown'>z990.5-base</model>
-      <model usable='yes' vendor='unknown'>z9BC-base</model>
-      <model usable='yes' vendor='unknown'>z890.2</model>
-      <model usable='yes' vendor='unknown'>z890</model>
-      <model usable='yes' vendor='unknown'>z9BC</model>
-      <model usable='yes' vendor='unknown'>z13</model>
-      <model usable='yes' vendor='unknown'>z196</model>
-      <model usable='yes' vendor='unknown'>z13s</model>
-      <model usable='yes' vendor='unknown'>z990.3</model>
-      <model usable='yes' vendor='unknown'>z13s-base</model>
-      <model usable='yes' vendor='unknown'>z9EC</model>
-      <model usable='yes' vendor='unknown'>gen15a</model>
-      <model usable='yes' vendor='unknown'>z14ZR1-base</model>
-      <model usable='yes' vendor='unknown'>z14.2-base</model>
-      <model usable='yes' vendor='unknown'>z900.3-base</model>
-      <model usable='yes' vendor='unknown'>z13.2-base</model>
-      <model usable='yes' vendor='unknown'>z196.2-base</model>
-      <model usable='yes' vendor='unknown'>zBC12-base</model>
-      <model usable='yes' vendor='unknown'>z9BC.2-base</model>
-      <model usable='yes' vendor='unknown'>z900.2-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.3</model>
-      <model usable='yes' vendor='unknown'>zEC12</model>
-      <model usable='yes' vendor='unknown'>z900</model>
-      <model usable='yes' vendor='unknown'>z114-base</model>
-      <model usable='yes' vendor='unknown'>zEC12-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.2</model>
-      <model usable='yes' vendor='unknown'>z10EC-base</model>
-      <model usable='yes' vendor='unknown'>z900.3</model>
-      <model usable='yes' vendor='unknown'>z14ZR1</model>
-      <model usable='yes' vendor='unknown'>z10BC</model>
-      <model usable='yes' vendor='unknown'>z10BC.2-base</model>
-      <model usable='yes' vendor='unknown'>z9BC.2</model>
-      <model usable='yes' vendor='unknown'>z990</model>
-      <model usable='yes' vendor='unknown'>z990.2</model>
-      <model usable='yes' vendor='unknown'>z14</model>
-      <model usable='yes' vendor='unknown'>gen15b-base</model>
-      <model usable='yes' vendor='unknown'>z990.4</model>
+      <model usable='yes' vendor='IBM'>z800-base</model>
+      <model usable='yes' vendor='IBM'>z890.2-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.2</model>
+      <model usable='yes' vendor='IBM'>z13.2</model>
+      <model usable='yes' vendor='IBM'>z990.5-base</model>
+      <model usable='yes' vendor='IBM'>z9BC-base</model>
+      <model usable='yes' vendor='IBM'>z890.2</model>
+      <model usable='yes' vendor='IBM'>z890</model>
+      <model usable='yes' vendor='IBM'>z9BC</model>
+      <model usable='yes' vendor='IBM'>z13</model>
+      <model usable='yes' vendor='IBM'>z196</model>
+      <model usable='yes' vendor='IBM'>z13s</model>
+      <model usable='yes' vendor='IBM'>z990.3</model>
+      <model usable='yes' vendor='IBM'>z13s-base</model>
+      <model usable='yes' vendor='IBM'>z9EC</model>
+      <model usable='yes' vendor='IBM'>gen15a</model>
+      <model usable='yes' vendor='IBM'>z14ZR1-base</model>
+      <model usable='yes' vendor='IBM'>z14.2-base</model>
+      <model usable='yes' vendor='IBM'>z900.3-base</model>
+      <model usable='yes' vendor='IBM'>z13.2-base</model>
+      <model usable='yes' vendor='IBM'>z196.2-base</model>
+      <model usable='yes' vendor='IBM'>zBC12-base</model>
+      <model usable='yes' vendor='IBM'>z9BC.2-base</model>
+      <model usable='yes' vendor='IBM'>z900.2-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.3</model>
+      <model usable='yes' vendor='IBM'>zEC12</model>
+      <model usable='yes' vendor='IBM'>z900</model>
+      <model usable='yes' vendor='IBM'>z114-base</model>
+      <model usable='yes' vendor='IBM'>zEC12-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.2</model>
+      <model usable='yes' vendor='IBM'>z10EC-base</model>
+      <model usable='yes' vendor='IBM'>z900.3</model>
+      <model usable='yes' vendor='IBM'>z14ZR1</model>
+      <model usable='yes' vendor='IBM'>z10BC</model>
+      <model usable='yes' vendor='IBM'>z10BC.2-base</model>
+      <model usable='yes' vendor='IBM'>z9BC.2</model>
+      <model usable='yes' vendor='IBM'>z990</model>
+      <model usable='yes' vendor='IBM'>z990.2</model>
+      <model usable='yes' vendor='IBM'>z14</model>
+      <model usable='yes' vendor='IBM'>gen15b-base</model>
+      <model usable='yes' vendor='IBM'>z990.4</model>
       <model usable='yes' vendor='unknown'>max</model>
-      <model usable='yes' vendor='unknown'>z10EC.2-base</model>
-      <model usable='yes' vendor='unknown'>gen15a-base</model>
-      <model usable='yes' vendor='unknown'>z800</model>
-      <model usable='yes' vendor='unknown'>z10EC</model>
-      <model usable='yes' vendor='unknown'>zEC12.2</model>
-      <model usable='yes' vendor='unknown'>z990.2-base</model>
-      <model usable='yes' vendor='unknown'>z900-base</model>
-      <model usable='yes' vendor='unknown'>z10BC.2</model>
-      <model usable='yes' vendor='unknown'>z9EC-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.3-base</model>
-      <model usable='yes' vendor='unknown'>z114</model>
-      <model usable='yes' vendor='unknown'>z890.3</model>
-      <model usable='yes' vendor='unknown'>z196-base</model>
-      <model usable='yes' vendor='unknown'>z9EC.2-base</model>
-      <model usable='yes' vendor='unknown'>z196.2</model>
-      <model usable='yes' vendor='unknown'>z14.2</model>
-      <model usable='yes' vendor='unknown'>z990-base</model>
-      <model usable='yes' vendor='unknown'>z900.2</model>
-      <model usable='yes' vendor='unknown'>z890-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.3</model>
-      <model usable='yes' vendor='unknown'>z14-base</model>
-      <model usable='yes' vendor='unknown'>z990.4-base</model>
-      <model usable='yes' vendor='unknown'>z10EC.3-base</model>
-      <model usable='yes' vendor='unknown'>z10BC-base</model>
-      <model usable='yes' vendor='unknown'>z13-base</model>
-      <model usable='yes' vendor='unknown'>z990.3-base</model>
-      <model usable='yes' vendor='unknown'>zEC12.2-base</model>
-      <model usable='yes' vendor='unknown'>zBC12</model>
-      <model usable='yes' vendor='unknown'>z890.3-base</model>
-      <model usable='yes' vendor='unknown'>z990.5</model>
-      <model usable='yes' vendor='unknown'>gen15b</model>
+      <model usable='yes' vendor='IBM'>z10EC.2-base</model>
+      <model usable='yes' vendor='IBM'>gen15a-base</model>
+      <model usable='yes' vendor='IBM'>z800</model>
+      <model usable='yes' vendor='IBM'>z10EC</model>
+      <model usable='yes' vendor='IBM'>zEC12.2</model>
+      <model usable='yes' vendor='IBM'>z990.2-base</model>
+      <model usable='yes' vendor='IBM'>z900-base</model>
+      <model usable='yes' vendor='IBM'>z10BC.2</model>
+      <model usable='yes' vendor='IBM'>z9EC-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.3-base</model>
+      <model usable='yes' vendor='IBM'>z114</model>
+      <model usable='yes' vendor='IBM'>z890.3</model>
+      <model usable='yes' vendor='IBM'>z196-base</model>
+      <model usable='yes' vendor='IBM'>z9EC.2-base</model>
+      <model usable='yes' vendor='IBM'>z196.2</model>
+      <model usable='yes' vendor='IBM'>z14.2</model>
+      <model usable='yes' vendor='IBM'>z990-base</model>
+      <model usable='yes' vendor='IBM'>z900.2</model>
+      <model usable='yes' vendor='IBM'>z890-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.3</model>
+      <model usable='yes' vendor='IBM'>z14-base</model>
+      <model usable='yes' vendor='IBM'>z990.4-base</model>
+      <model usable='yes' vendor='IBM'>z10EC.3-base</model>
+      <model usable='yes' vendor='IBM'>z10BC-base</model>
+      <model usable='yes' vendor='IBM'>z13-base</model>
+      <model usable='yes' vendor='IBM'>z990.3-base</model>
+      <model usable='yes' vendor='IBM'>zEC12.2-base</model>
+      <model usable='yes' vendor='IBM'>zBC12</model>
+      <model usable='yes' vendor='IBM'>z890.3-base</model>
+      <model usable='yes' vendor='IBM'>z990.5</model>
+      <model usable='yes' vendor='IBM'>gen15b</model>
       <model usable='yes' vendor='unknown'>qemu</model>
     </mode>
   </cpu>
-- 
2.31.1
Re: [PATCH v2] cpu_s390: Implement getVendorForModel for IBM Z
Posted by Boris Fiuczynski 1 year, 5 months ago
On 11/25/22 10:36 AM, Thomas Huth wrote:
> When running "virsh domcapabilities" on a s390x host, all the CPU
> models show up with vendor='unknown' - which sounds kind of weird
> since the vendor of these mainframe CPUs is well known: IBM.
> All CPUs starting with either "z" or "gen" match a real mainframe
> CPU by IBM, so let's return the string "IBM" for those now.
> The only remaining ones are now the artifical "qemu" and "max"

s/artifical/artificial/

> models from QEMU itself, so it should be OK to get an "unknown"
> vendor for those two.
> 
> Thanks to Boris Fiuczynski for helping with the domaincapsdata!

Thanks for the thanks. :D
Instead of the sentence you could remove the RB and add
Signed-off-by: Boris Fiuczynski<fiuczy@linux.ibm.com>

> 
> Reviewed-by: Boris Fiuczynski<fiuczy@linux.ibm.com>
> Signed-off-by: Thomas Huth<thuth@redhat.com>


-- 
Mit freundlichen Grüßen/Kind regards
    Boris Fiuczynski

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
Re: [PATCH v2] cpu_s390: Implement getVendorForModel for IBM Z
Posted by Thomas Huth 1 year, 5 months ago
On 25/11/2022 11.29, Boris Fiuczynski wrote:
> On 11/25/22 10:36 AM, Thomas Huth wrote:
>> When running "virsh domcapabilities" on a s390x host, all the CPU
>> models show up with vendor='unknown' - which sounds kind of weird
>> since the vendor of these mainframe CPUs is well known: IBM.
>> All CPUs starting with either "z" or "gen" match a real mainframe
>> CPU by IBM, so let's return the string "IBM" for those now.
>> The only remaining ones are now the artifical "qemu" and "max"
> 
> s/artifical/artificial/
> 
>> models from QEMU itself, so it should be OK to get an "unknown"
>> vendor for those two.
>>
>> Thanks to Boris Fiuczynski for helping with the domaincapsdata!
> 
> Thanks for the thanks. :D
> Instead of the sentence you could remove the RB and add
> Signed-off-by: Boris Fiuczynski<fiuczy@linux.ibm.com>

OK, I'll send a v3 with both suggestions (by you and Jiri) addressed.

  Thomas
Re: [PATCH v2] cpu_s390: Implement getVendorForModel for IBM Z
Posted by Jiri Denemark 1 year, 5 months ago
On Fri, Nov 25, 2022 at 10:36:22 +0100, Thomas Huth wrote:
> When running "virsh domcapabilities" on a s390x host, all the CPU
> models show up with vendor='unknown' - which sounds kind of weird
> since the vendor of these mainframe CPUs is well known: IBM.
> All CPUs starting with either "z" or "gen" match a real mainframe
> CPU by IBM, so let's return the string "IBM" for those now.
> The only remaining ones are now the artifical "qemu" and "max"
> models from QEMU itself, so it should be OK to get an "unknown"
> vendor for those two.
> 
> Thanks to Boris Fiuczynski for helping with the domaincapsdata!
> 
> Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  src/cpu/cpu_s390.c                        |  11 ++
>  tests/domaincapsdata/qemu_4.2.0.s390x.xml | 144 +++++++++++-----------
>  tests/domaincapsdata/qemu_5.2.0.s390x.xml | 144 +++++++++++-----------
>  tests/domaincapsdata/qemu_6.0.0.s390x.xml | 144 +++++++++++-----------
>  4 files changed, 227 insertions(+), 216 deletions(-)
> 
> diff --git a/src/cpu/cpu_s390.c b/src/cpu/cpu_s390.c
> index d908a83928..7416ec6dc5 100644
> --- a/src/cpu/cpu_s390.c
> +++ b/src/cpu/cpu_s390.c
> @@ -109,6 +109,16 @@ virCPUs390ValidateFeatures(virCPUDef *cpu)
>  }
>  
>  
> +static const char *
> +virCPUs390GetVendorForModel(const char *modelName)
> +{
> +    if (modelName[0] == 'z' || STREQLEN(modelName, "gen", 3))
> +        return "IBM";

We have a STRPREFIX helper which might be useful especially for the
second part of the condition, but it won't hurt in the first part
either:

       if (STRPREFIX(modelName, "z") || STRPREFIX(modelName, "gen"))
           return "IBM";

> +
> +    return NULL;
> +}

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>