[PATCH v2 3/5] qemu_capabilities: query deprecated features for host-model

Collin Walling posted 5 patches 1 month ago
There is a newer version of this series
[PATCH v2 3/5] qemu_capabilities: query deprecated features for host-model
Posted by Collin Walling 1 month ago
Add QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS for detecting
if query-cpu-model-expansion can report deprecated CPU model properties.
QEMU introduced this capability in 9.1 release.  Add flag and deprecated
features to the capabilities test data for QEMU 9.1 and 9.2 replies/XML
since it can now be accounted for.

When probing for the host CPU, perform a full CPU model expansion to
retrieve the list of features deprecated across the entire architecture.
The list and count are stored in the host's CPU model info within the
QEMU capabilities.  Other info resulting from this query (e.g. model
name, etc) is ignored.

The new capabilities flag is used to fence off the extra query for
architectures/QEMU binaries that do not report deprecated CPU model
features.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
---
 src/qemu/qemu_capabilities.c                  |  38 ++
 src/qemu/qemu_capabilities.h                  |   1 +
 .../caps_9.1.0_s390x.replies                  | 348 +++++++++++++++++-
 .../qemucapabilitiesdata/caps_9.1.0_s390x.xml |   7 +
 .../caps_9.2.0_s390x.replies                  | 348 +++++++++++++++++-
 .../qemucapabilitiesdata/caps_9.2.0_s390x.xml |   7 +
 6 files changed, 745 insertions(+), 4 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 9fa868c8b7..50905750fb 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -721,6 +721,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
               "chardev-reconnect-miliseconds", /* QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS */
               "virtio-ccw.loadparm", /* QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPARM */
               "netdev-stream-reconnect-miliseconds", /* QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS */
+              "query-cpu-model-expansion.deprecated-props", /* QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS */
     );
 
 
@@ -1594,6 +1595,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = {
     { "screendump/arg-type/device", QEMU_CAPS_SCREENDUMP_DEVICE },
     { "screendump/arg-type/format/^png", QEMU_CAPS_SCREENSHOT_FORMAT_PNG },
     { "set-numa-node/arg-type/+hmat-lb", QEMU_CAPS_NUMA_HMAT },
+    { "query-cpu-model-expansion/ret-type/deprecated-props", QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS },
 };
 
 typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps;
@@ -3146,6 +3148,38 @@ virQEMUCapsProbeHypervCapabilities(virQEMUCaps *qemuCaps,
 }
 
 
+/**
+ * virQEMUCapsProbeFullDeprecatedProperties
+ * @mon: QEMU monitor
+ * @cpu: CPU definition to be expanded
+ * @props: the array to be filled with deprecated features
+ *
+ * Performs a full CPU model expansion to retrieve an array of deprecated
+ * properties. If the expansion succeeds, then data previously stored in
+ * @props is freed.
+ *
+ * Returns: -1 if the expansion failed; otherwise 0.
+ */
+static int
+virQEMUCapsProbeFullDeprecatedProperties(qemuMonitor *mon,
+                                         virCPUDef *cpu,
+                                         GStrv *props)
+{
+    g_autoptr(qemuMonitorCPUModelInfo) propsInfo = NULL;
+
+    if (qemuMonitorGetCPUModelExpansion(mon, QEMU_MONITOR_CPU_MODEL_EXPANSION_FULL,
+                                        cpu, true, false, false, &propsInfo) < 0)
+        return -1;
+
+    if (propsInfo && propsInfo->deprecated_props) {
+        g_free(*props);
+        *props = g_steal_pointer(&propsInfo->deprecated_props);
+    }
+
+    return 0;
+}
+
+
 static int
 virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps,
                            virQEMUCapsAccel *accel,
@@ -3227,6 +3261,10 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps,
         modelInfo->migratability = true;
     }
 
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS) &&
+        virQEMUCapsProbeFullDeprecatedProperties(mon, cpu, &modelInfo->deprecated_props) < 0)
+        return -1;
+
     if (virQEMUCapsTypeIsAccelerated(virtType) &&
         (ARCH_IS_X86(qemuCaps->arch) || ARCH_IS_ARM(qemuCaps->arch))) {
         g_autoptr(qemuMonitorCPUModelInfo) fullQEMU = NULL;
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 48e4530c95..8347fd7fbb 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -700,6 +700,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
     QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS, /* 'reconnect-ms' option for chardevs supported */
     QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPARM, /* loadparm available on CCW device for multi device boot */
     QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS, /* 'reconnect-ms' option for netdev stream supported */
+    QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS, /* query-cpu-model-expansion may report deprecated CPU properties */
 
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;
diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies
index 2d4ab8ed75..0a523ba47e 100644
--- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies
+++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies
@@ -32252,6 +32252,89 @@
   "id": "libvirt-40"
 }
 
+{
+  "execute": "query-cpu-model-expansion",
+  "arguments": {
+    "type": "full",
+    "model": {
+      "name": "host"
+    }
+  },
+  "id": "libvirt-41"
+}
+
+{
+  "return": {
+    "deprecated-props": [
+      "bpb",
+      "te",
+      "cte",
+      "csske"
+    ],
+    "model": {
+      "name": "gen16a-base",
+      "props": {
+        "nnpa": true,
+        "aen": true,
+        "cmmnt": true,
+        "vxpdeh": true,
+        "aefsi": true,
+        "diag318": true,
+        "csske": true,
+        "mepoch": true,
+        "msa9": true,
+        "msa8": true,
+        "msa7": true,
+        "msa6": true,
+        "msa5": true,
+        "msa4": true,
+        "msa3": true,
+        "msa2": true,
+        "msa1": true,
+        "sthyi": true,
+        "edat": true,
+        "ri": true,
+        "deflate": true,
+        "edat2": true,
+        "etoken": true,
+        "vx": true,
+        "ipter": true,
+        "pai": true,
+        "paie": true,
+        "mepochptff": true,
+        "ap": true,
+        "vxeh": true,
+        "vxpd": true,
+        "esop": true,
+        "msa9_pckmo": true,
+        "vxeh2": true,
+        "esort": true,
+        "appv": true,
+        "apqi": true,
+        "apft": true,
+        "els": true,
+        "iep": true,
+        "appvi": true,
+        "apqci": true,
+        "cte": true,
+        "ais": true,
+        "bpb": true,
+        "ctop": true,
+        "gs": true,
+        "ppa15": true,
+        "zpci": true,
+        "rdp": true,
+        "sea_esop2": true,
+        "beareh": true,
+        "te": true,
+        "cmm": true,
+        "vxpdeh2": true
+      }
+    }
+  },
+  "id": "libvirt-41"
+}
+
 {
   "execute": "qmp_capabilities",
   "id": "libvirt-1"
@@ -36262,10 +36345,271 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "query-cpu-model-expansion",
+  "arguments": {
+    "type": "full",
+    "model": {
+      "name": "max"
+    }
+  },
+  "id": "libvirt-4"
+}
+
+{
+  "return": {
+    "deprecated-props": [
+      "bpb",
+      "te",
+      "cte",
+      "csske"
+    ],
+    "model": {
+      "name": "gen15a-base",
+      "props": {
+        "pfmfi": false,
+        "exrl": true,
+        "stfle45": true,
+        "kmctr-etdea-192": false,
+        "kmctr-etdea-128": false,
+        "nnpa": false,
+        "cmma": false,
+        "dateh2": false,
+        "gen13ptff": false,
+        "aen": true,
+        "kmo-etdea-192": false,
+        "kmf-etdea-192": false,
+        "kmc-etdea-192": false,
+        "kmac-tdea-192": false,
+        "kimd-sha-512": true,
+        "dateh": true,
+        "km-aes-256": false,
+        "km-aes-192": false,
+        "kmctr-aes-256": false,
+        "kma-gcm-eaes-192": false,
+        "kmo-tdea-192": false,
+        "kmf-tdea-192": false,
+        "kmctr-tdea-192": false,
+        "kmctr-tdea-128": false,
+        "km-etdea-192": false,
+        "kmc-tdea-192": false,
+        "cmmnt": false,
+        "iacc2": true,
+        "parseh": false,
+        "klmd-sha-512": true,
+        "kma-gcm-eaes-128": false,
+        "csst": true,
+        "pcc-xts-aes-256": false,
+        "pcc-xts-aes-128": false,
+        "pckmo-aes-128": false,
+        "idter": false,
+        "idtes": true,
+        "prno-trng-qrtcr": false,
+        "pcc-cmac-eaes-128": false,
+        "vxpdeh": false,
+        "aefsi": true,
+        "pckmo-etdea-192": false,
+        "pckmo-etdea-128": false,
+        "diag318": false,
+        "pcc-cmac-eaes-256": false,
+        "msa-base": true,
+        "pcc-cmac-etdea-192": false,
+        "hpma2": false,
+        "kmctr-eaes-256": false,
+        "csske": false,
+        "csst2": true,
+        "mepoch": false,
+        "msa9": false,
+        "msa6": false,
+        "msa1": false,
+        "kmctr-aes-192": false,
+        "pckmo-aes-256": false,
+        "sthyi": false,
+        "stckf": true,
+        "stfle": true,
+        "edat": false,
+        "etf3": true,
+        "etf2": true,
+        "hfpm": false,
+        "ri": false,
+        "pcc-xts-eaes-256": false,
+        "deflate": false,
+        "km-xts-eaes-256": false,
+        "km-xts-eaes-128": false,
+        "edat2": false,
+        "hfpue": false,
+        "kmo-aes-192": false,
+        "kmf-aes-192": false,
+        "km-eaes-192": false,
+        "kmc-aes-192": false,
+        "unpack": false,
+        "dfp": false,
+        "kmo-aes-128": false,
+        "kmf-aes-128": false,
+        "km-eaes-128": false,
+        "kmctr-dea": false,
+        "mvcos": true,
+        "etoken": false,
+        "pcc-cmac-tdea-192": false,
+        "km-dea": false,
+        "sprogp": true,
+        "sigpif": false,
+        "kmac-eaes-128": false,
+        "ldisphp": true,
+        "pckmo-aes-192": false,
+        "ipter": false,
+        "vx": true,
+        "pai": false,
+        "kimd-ghash": false,
+        "emon": false,
+        "kimd-sha-1": false,
+        "cei": false,
+        "cmpsceh": false,
+        "kmctr-eaes-192": false,
+        "kmctr-eaes-128": false,
+        "ginste": true,
+        "km-xts-aes-256": false,
+        "kmac-eaes-256": false,
+        "kmo-eaes-128": false,
+        "kmf-eaes-128": false,
+        "kmc-eaes-128": false,
+        "kmac-aes-128": false,
+        "paie": false,
+        "dfppc": false,
+        "dfpzc": false,
+        "dfphp": false,
+        "kmo-eaes-256": false,
+        "kmf-eaes-256": false,
+        "kmc-eaes-256": false,
+        "kmac-aes-256": false,
+        "kmac-etdea-192": false,
+        "kmac-etdea-128": false,
+        "kmo-dea": false,
+        "kmf-dea": false,
+        "km-edea": false,
+        "kmc-dea": false,
+        "stfle49": true,
+        "klmd-sha-1": false,
+        "mepochptff": false,
+        "opc": false,
+        "ap": false,
+        "asnlxr": false,
+        "gpereh": false,
+        "minste2": true,
+        "pcc-cmac-dea": false,
+        "vxpd": false,
+        "vxeh": true,
+        "esop": true,
+        "ectg": true,
+        "ib": false,
+        "km-tdea-192": false,
+        "km-tdea-128": false,
+        "msa9_pckmo": false,
+        "siif": false,
+        "kma-gcm-aes-256": false,
+        "kma-gcm-aes-192": false,
+        "kma-gcm-aes-128": false,
+        "pcc-cmac-aes-256": false,
+        "tsi": false,
+        "vxeh2": true,
+        "tpei": false,
+        "esort": false,
+        "esan3": true,
+        "fpe": true,
+        "ibs": false,
+        "pcc-xts-eaes-128": false,
+        "kmac-eaes-192": false,
+        "zarch": true,
+        "kmo-edea": false,
+        "kmf-edea": false,
+        "kmc-edea": false,
+        "kmac-dea": false,
+        "appv": false,
+        "apqi": false,
+        "apft": false,
+        "stfle53": true,
+        "ppno-sha-512-drng": false,
+        "pcc-cmac-tdea-128": false,
+        "kmo-aes-256": false,
+        "kmf-aes-256": false,
+        "km-eaes-256": false,
+        "kmc-aes-256": false,
+        "els": false,
+        "sief2": false,
+        "eimm": true,
+        "pcc-cmac-etdea-128": false,
+        "iep": true,
+        "irbm": false,
+        "km-xts-aes-128": false,
+        "srs": true,
+        "appvi": false,
+        "apqci": false,
+        "kmo-tdea-128": false,
+        "kmf-tdea-128": false,
+        "km-etdea-128": false,
+        "kmc-tdea-128": false,
+        "kss": false,
+        "cte": false,
+        "kmac-edea": false,
+        "prno-trng": true,
+        "kma-gcm-eaes-256": false,
+        "ais": true,
+        "fpseh": true,
+        "ltlbc": true,
+        "ldisp": true,
+        "kmo-etdea-128": false,
+        "kmf-etdea-128": false,
+        "kmc-etdea-128": false,
+        "kmac-tdea-128": false,
+        "pcc-cmac-edea": false,
+        "bpb": false,
+        "kmctr-edea": false,
+        "64bscao": false,
+        "ctop": false,
+        "kmo-eaes-192": false,
+        "kmf-eaes-192": false,
+        "kmc-eaes-192": false,
+        "kmac-aes-192": false,
+        "gs": false,
+        "sema": false,
+        "etf3eh": true,
+        "etf2eh": true,
+        "eec": false,
+        "pcc-cmac-eaes-192": false,
+        "ppa15": false,
+        "kmc-prng": false,
+        "zpci": true,
+        "rdp": false,
+        "nonqks": false,
+        "sea_esop2": true,
+        "minste3": true,
+        "beareh": false,
+        "pfpo": false,
+        "te": false,
+        "msa8-base": true,
+        "msa4-base": true,
+        "msa3-base": true,
+        "msa5-base": true,
+        "pcc-cmac-aes-192": false,
+        "cmm": false,
+        "tods": false,
+        "pcc-cmac-aes-128": false,
+        "plo": true,
+        "pckmo-edea": false,
+        "gsls": false,
+        "kmctr-aes-128": false,
+        "skey": false,
+        "vxpdeh2": false
+      }
+    }
+  },
   "id": "libvirt-4"
 }
 
+{
+  "execute": "query-machines",
+  "id": "libvirt-5"
+}
+
 {
   "return": [
     {
@@ -36568,5 +36912,5 @@
       "default-ram-id": "s390.ram"
     }
   ],
-  "id": "libvirt-4"
+  "id": "libvirt-5"
 }
diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml
index 5e8db88e52..b3265dcc18 100644
--- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml
+++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml
@@ -133,6 +133,7 @@
   <flag name='virtio-sound'/>
   <flag name='netdev.user'/>
   <flag name='snapshot-internal-qmp'/>
+  <flag name='query-cpu-model-expansion.deprecated-props'/>
   <version>9001000</version>
   <microcodeVersion>39100246</microcodeVersion>
   <package>v9.1.0</package>
@@ -356,6 +357,12 @@
     <property name='msa3-base' type='boolean' value='true'/>
     <property name='msa5-base' type='boolean' value='true'/>
     <property name='tods' type='boolean' value='false'/>
+    <deprecatedFeatures>
+      <property name='bpb'/>
+      <property name='te'/>
+      <property name='cte'/>
+      <property name='csske'/>
+    </deprecatedFeatures>
   </hostCPU>
   <cpu type='tcg' name='z13' typename='z13-s390x-cpu' usable='no'>
     <blocker name='ppno-sha-512-drng'/>
diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies
index 91c9a049bf..9a58acaf08 100644
--- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies
+++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies
@@ -32411,6 +32411,89 @@
   "id": "libvirt-40"
 }
 
+{
+  "execute": "query-cpu-model-expansion",
+  "arguments": {
+    "type": "full",
+    "model": {
+      "name": "host"
+    }
+  },
+  "id": "libvirt-41"
+}
+
+{
+  "return": {
+    "deprecated-props": [
+      "bpb",
+      "te",
+      "cte",
+      "csske"
+    ],
+    "model": {
+      "name": "gen16a-base",
+      "props": {
+        "nnpa": true,
+        "aen": true,
+        "cmmnt": true,
+        "vxpdeh": true,
+        "aefsi": true,
+        "diag318": true,
+        "csske": true,
+        "mepoch": true,
+        "msa9": true,
+        "msa8": true,
+        "msa7": true,
+        "msa6": true,
+        "msa5": true,
+        "msa4": true,
+        "msa3": true,
+        "msa2": true,
+        "msa1": true,
+        "sthyi": true,
+        "edat": true,
+        "ri": true,
+        "deflate": true,
+        "edat2": true,
+        "etoken": true,
+        "vx": true,
+        "ipter": true,
+        "pai": true,
+        "paie": true,
+        "mepochptff": true,
+        "ap": true,
+        "vxeh": true,
+        "vxpd": true,
+        "esop": true,
+        "msa9_pckmo": true,
+        "vxeh2": true,
+        "esort": true,
+        "appv": true,
+        "apqi": true,
+        "apft": true,
+        "els": true,
+        "iep": true,
+        "appvi": true,
+        "apqci": true,
+        "cte": true,
+        "ais": true,
+        "bpb": true,
+        "ctop": true,
+        "gs": true,
+        "ppa15": true,
+        "zpci": true,
+        "rdp": true,
+        "sea_esop2": true,
+        "beareh": true,
+        "te": true,
+        "cmm": true,
+        "vxpdeh2": true
+      }
+    }
+  },
+  "id": "libvirt-41"
+}
+
 {
   "execute": "qmp_capabilities",
   "id": "libvirt-1"
@@ -36421,10 +36504,271 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "query-cpu-model-expansion",
+  "arguments": {
+    "type": "full",
+    "model": {
+      "name": "max"
+    }
+  },
+  "id": "libvirt-4"
+}
+
+{
+  "return": {
+    "deprecated-props": [
+      "bpb",
+      "te",
+      "cte",
+      "csske"
+    ],
+    "model": {
+      "name": "gen15a-base",
+      "props": {
+        "pfmfi": false,
+        "exrl": true,
+        "stfle45": true,
+        "kmctr-etdea-192": false,
+        "kmctr-etdea-128": false,
+        "nnpa": false,
+        "cmma": false,
+        "dateh2": false,
+        "gen13ptff": false,
+        "aen": true,
+        "kmo-etdea-192": false,
+        "kmf-etdea-192": false,
+        "kmc-etdea-192": false,
+        "kmac-tdea-192": false,
+        "kimd-sha-512": true,
+        "dateh": true,
+        "km-aes-256": false,
+        "km-aes-192": false,
+        "kmctr-aes-256": false,
+        "kma-gcm-eaes-192": false,
+        "kmo-tdea-192": false,
+        "kmf-tdea-192": false,
+        "kmctr-tdea-192": false,
+        "kmctr-tdea-128": false,
+        "km-etdea-192": false,
+        "kmc-tdea-192": false,
+        "cmmnt": false,
+        "iacc2": true,
+        "parseh": false,
+        "klmd-sha-512": true,
+        "kma-gcm-eaes-128": false,
+        "csst": true,
+        "pcc-xts-aes-256": false,
+        "pcc-xts-aes-128": false,
+        "pckmo-aes-128": false,
+        "idter": false,
+        "idtes": true,
+        "prno-trng-qrtcr": false,
+        "pcc-cmac-eaes-128": false,
+        "vxpdeh": false,
+        "aefsi": true,
+        "pckmo-etdea-192": false,
+        "pckmo-etdea-128": false,
+        "diag318": false,
+        "pcc-cmac-eaes-256": false,
+        "msa-base": true,
+        "pcc-cmac-etdea-192": false,
+        "hpma2": false,
+        "kmctr-eaes-256": false,
+        "csske": false,
+        "csst2": true,
+        "mepoch": false,
+        "msa9": false,
+        "msa6": false,
+        "msa1": false,
+        "kmctr-aes-192": false,
+        "pckmo-aes-256": false,
+        "sthyi": false,
+        "stckf": true,
+        "stfle": true,
+        "edat": false,
+        "etf3": true,
+        "etf2": true,
+        "hfpm": false,
+        "ri": false,
+        "pcc-xts-eaes-256": false,
+        "deflate": false,
+        "km-xts-eaes-256": false,
+        "km-xts-eaes-128": false,
+        "edat2": false,
+        "hfpue": false,
+        "kmo-aes-192": false,
+        "kmf-aes-192": false,
+        "km-eaes-192": false,
+        "kmc-aes-192": false,
+        "unpack": false,
+        "dfp": false,
+        "kmo-aes-128": false,
+        "kmf-aes-128": false,
+        "km-eaes-128": false,
+        "kmctr-dea": false,
+        "mvcos": true,
+        "etoken": false,
+        "pcc-cmac-tdea-192": false,
+        "km-dea": false,
+        "sprogp": true,
+        "sigpif": false,
+        "kmac-eaes-128": false,
+        "ldisphp": true,
+        "pckmo-aes-192": false,
+        "ipter": false,
+        "vx": true,
+        "pai": false,
+        "kimd-ghash": false,
+        "emon": false,
+        "kimd-sha-1": false,
+        "cei": false,
+        "cmpsceh": false,
+        "kmctr-eaes-192": false,
+        "kmctr-eaes-128": false,
+        "ginste": true,
+        "km-xts-aes-256": false,
+        "kmac-eaes-256": false,
+        "kmo-eaes-128": false,
+        "kmf-eaes-128": false,
+        "kmc-eaes-128": false,
+        "kmac-aes-128": false,
+        "paie": false,
+        "dfppc": false,
+        "dfpzc": false,
+        "dfphp": false,
+        "kmo-eaes-256": false,
+        "kmf-eaes-256": false,
+        "kmc-eaes-256": false,
+        "kmac-aes-256": false,
+        "kmac-etdea-192": false,
+        "kmac-etdea-128": false,
+        "kmo-dea": false,
+        "kmf-dea": false,
+        "km-edea": false,
+        "kmc-dea": false,
+        "stfle49": true,
+        "klmd-sha-1": false,
+        "mepochptff": false,
+        "opc": false,
+        "ap": false,
+        "asnlxr": false,
+        "gpereh": false,
+        "minste2": true,
+        "pcc-cmac-dea": false,
+        "vxpd": false,
+        "vxeh": true,
+        "esop": true,
+        "ectg": true,
+        "ib": false,
+        "km-tdea-192": false,
+        "km-tdea-128": false,
+        "msa9_pckmo": false,
+        "siif": false,
+        "kma-gcm-aes-256": false,
+        "kma-gcm-aes-192": false,
+        "kma-gcm-aes-128": false,
+        "pcc-cmac-aes-256": false,
+        "tsi": false,
+        "vxeh2": true,
+        "tpei": false,
+        "esort": false,
+        "esan3": true,
+        "fpe": true,
+        "ibs": false,
+        "pcc-xts-eaes-128": false,
+        "kmac-eaes-192": false,
+        "zarch": true,
+        "kmo-edea": false,
+        "kmf-edea": false,
+        "kmc-edea": false,
+        "kmac-dea": false,
+        "appv": false,
+        "apqi": false,
+        "apft": false,
+        "stfle53": true,
+        "ppno-sha-512-drng": false,
+        "pcc-cmac-tdea-128": false,
+        "kmo-aes-256": false,
+        "kmf-aes-256": false,
+        "km-eaes-256": false,
+        "kmc-aes-256": false,
+        "els": false,
+        "sief2": false,
+        "eimm": true,
+        "pcc-cmac-etdea-128": false,
+        "iep": true,
+        "irbm": false,
+        "km-xts-aes-128": false,
+        "srs": true,
+        "appvi": false,
+        "apqci": false,
+        "kmo-tdea-128": false,
+        "kmf-tdea-128": false,
+        "km-etdea-128": false,
+        "kmc-tdea-128": false,
+        "kss": false,
+        "cte": false,
+        "kmac-edea": false,
+        "prno-trng": true,
+        "kma-gcm-eaes-256": false,
+        "ais": true,
+        "fpseh": true,
+        "ltlbc": true,
+        "ldisp": true,
+        "kmo-etdea-128": false,
+        "kmf-etdea-128": false,
+        "kmc-etdea-128": false,
+        "kmac-tdea-128": false,
+        "pcc-cmac-edea": false,
+        "bpb": false,
+        "kmctr-edea": false,
+        "64bscao": false,
+        "ctop": false,
+        "kmo-eaes-192": false,
+        "kmf-eaes-192": false,
+        "kmc-eaes-192": false,
+        "kmac-aes-192": false,
+        "gs": false,
+        "sema": false,
+        "etf3eh": true,
+        "etf2eh": true,
+        "eec": false,
+        "pcc-cmac-eaes-192": false,
+        "ppa15": false,
+        "kmc-prng": false,
+        "zpci": true,
+        "rdp": false,
+        "nonqks": false,
+        "sea_esop2": true,
+        "minste3": true,
+        "beareh": false,
+        "pfpo": false,
+        "te": false,
+        "msa8-base": true,
+        "msa4-base": true,
+        "msa3-base": true,
+        "msa5-base": true,
+        "pcc-cmac-aes-192": false,
+        "cmm": false,
+        "tods": false,
+        "pcc-cmac-aes-128": false,
+        "plo": true,
+        "pckmo-edea": false,
+        "gsls": false,
+        "kmctr-aes-128": false,
+        "skey": false,
+        "vxpdeh2": false
+      }
+    }
+  },
   "id": "libvirt-4"
 }
 
+{
+  "execute": "query-machines",
+  "id": "libvirt-5"
+}
+
 {
   "return": [
     {
@@ -36737,5 +37081,5 @@
       "default-ram-id": "s390.ram"
     }
   ],
-  "id": "libvirt-4"
+  "id": "libvirt-5"
 }
diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml
index 79a149d187..c3a9b62ec0 100644
--- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml
+++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml
@@ -136,6 +136,7 @@
   <flag name='chardev-reconnect-miliseconds'/>
   <flag name='virtio-ccw.loadparm'/>
   <flag name='netdev-stream-reconnect-miliseconds'/>
+  <flag name='query-cpu-model-expansion.deprecated-props'/>
   <version>9001050</version>
   <microcodeVersion>39100247</microcodeVersion>
   <package>v9.1.0-1348-g11b8920ed2</package>
@@ -360,6 +361,12 @@
     <property name='msa3-base' type='boolean' value='true'/>
     <property name='msa5-base' type='boolean' value='true'/>
     <property name='tods' type='boolean' value='false'/>
+    <deprecatedFeatures>
+      <property name='bpb'/>
+      <property name='te'/>
+      <property name='cte'/>
+      <property name='csske'/>
+    </deprecatedFeatures>
   </hostCPU>
   <cpu type='tcg' name='z13' typename='z13-s390x-cpu' usable='no'>
     <blocker name='ppno-sha-512-drng'/>
-- 
2.45.1
Re: [PATCH v2 3/5] qemu_capabilities: query deprecated features for host-model
Posted by Boris Fiuczynski 4 weeks, 1 day ago
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>

On 11/25/24 20:46, Collin Walling wrote:
> Add QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS for detecting
> if query-cpu-model-expansion can report deprecated CPU model properties.
> QEMU introduced this capability in 9.1 release.  Add flag and deprecated
> features to the capabilities test data for QEMU 9.1 and 9.2 replies/XML
> since it can now be accounted for.
> 
> When probing for the host CPU, perform a full CPU model expansion to
> retrieve the list of features deprecated across the entire architecture.
> The list and count are stored in the host's CPU model info within the
> QEMU capabilities.  Other info resulting from this query (e.g. model
> name, etc) is ignored.
> 
> The new capabilities flag is used to fence off the extra query for
> architectures/QEMU binaries that do not report deprecated CPU model
> features.
> 
> Signed-off-by: Collin Walling <walling@linux.ibm.com>
> ---
>   src/qemu/qemu_capabilities.c                  |  38 ++
>   src/qemu/qemu_capabilities.h                  |   1 +
>   .../caps_9.1.0_s390x.replies                  | 348 +++++++++++++++++-
>   .../qemucapabilitiesdata/caps_9.1.0_s390x.xml |   7 +
>   .../caps_9.2.0_s390x.replies                  | 348 +++++++++++++++++-
>   .../qemucapabilitiesdata/caps_9.2.0_s390x.xml |   7 +
>   6 files changed, 745 insertions(+), 4 deletions(-)
> 
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index 9fa868c8b7..50905750fb 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -721,6 +721,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
>                 "chardev-reconnect-miliseconds", /* QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS */
>                 "virtio-ccw.loadparm", /* QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPARM */
>                 "netdev-stream-reconnect-miliseconds", /* QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS */
> +              "query-cpu-model-expansion.deprecated-props", /* QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS */
>       );
>   
>   
> @@ -1594,6 +1595,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = {
>       { "screendump/arg-type/device", QEMU_CAPS_SCREENDUMP_DEVICE },
>       { "screendump/arg-type/format/^png", QEMU_CAPS_SCREENSHOT_FORMAT_PNG },
>       { "set-numa-node/arg-type/+hmat-lb", QEMU_CAPS_NUMA_HMAT },
> +    { "query-cpu-model-expansion/ret-type/deprecated-props", QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS },
>   };
>   
>   typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps;
> @@ -3146,6 +3148,38 @@ virQEMUCapsProbeHypervCapabilities(virQEMUCaps *qemuCaps,
>   }
>   
>   
> +/**
> + * virQEMUCapsProbeFullDeprecatedProperties
> + * @mon: QEMU monitor
> + * @cpu: CPU definition to be expanded
> + * @props: the array to be filled with deprecated features
> + *
> + * Performs a full CPU model expansion to retrieve an array of deprecated
> + * properties. If the expansion succeeds, then data previously stored in
> + * @props is freed.
> + *
> + * Returns: -1 if the expansion failed; otherwise 0.
> + */
> +static int
> +virQEMUCapsProbeFullDeprecatedProperties(qemuMonitor *mon,
> +                                         virCPUDef *cpu,
> +                                         GStrv *props)
> +{
> +    g_autoptr(qemuMonitorCPUModelInfo) propsInfo = NULL;
> +
> +    if (qemuMonitorGetCPUModelExpansion(mon, QEMU_MONITOR_CPU_MODEL_EXPANSION_FULL,
> +                                        cpu, true, false, false, &propsInfo) < 0)
> +        return -1;
> +
> +    if (propsInfo && propsInfo->deprecated_props) {
> +        g_free(*props);
> +        *props = g_steal_pointer(&propsInfo->deprecated_props);
> +    }
> +
> +    return 0;
> +}
> +
> +
>   static int
>   virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps,
>                              virQEMUCapsAccel *accel,
> @@ -3227,6 +3261,10 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps,
>           modelInfo->migratability = true;
>       }
>   
> +    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS) &&
> +        virQEMUCapsProbeFullDeprecatedProperties(mon, cpu, &modelInfo->deprecated_props) < 0)
> +        return -1;
> +
>       if (virQEMUCapsTypeIsAccelerated(virtType) &&
>           (ARCH_IS_X86(qemuCaps->arch) || ARCH_IS_ARM(qemuCaps->arch))) {
>           g_autoptr(qemuMonitorCPUModelInfo) fullQEMU = NULL;
> diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
> index 48e4530c95..8347fd7fbb 100644
> --- a/src/qemu/qemu_capabilities.h
> +++ b/src/qemu/qemu_capabilities.h
> @@ -700,6 +700,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
>       QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS, /* 'reconnect-ms' option for chardevs supported */
>       QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPARM, /* loadparm available on CCW device for multi device boot */
>       QEMU_CAPS_NETDEV_STREAM_RECONNECT_MILISECONDS, /* 'reconnect-ms' option for netdev stream supported */
> +    QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS, /* query-cpu-model-expansion may report deprecated CPU properties */
>   
>       QEMU_CAPS_LAST /* this must always be the last item */
>   } virQEMUCapsFlags;
> diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies
> index 2d4ab8ed75..0a523ba47e 100644
> --- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies
> +++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.replies
> @@ -32252,6 +32252,89 @@
>     "id": "libvirt-40"
>   }
>   
> +{
> +  "execute": "query-cpu-model-expansion",
> +  "arguments": {
> +    "type": "full",
> +    "model": {
> +      "name": "host"
> +    }
> +  },
> +  "id": "libvirt-41"
> +}
> +
> +{
> +  "return": {
> +    "deprecated-props": [
> +      "bpb",
> +      "te",
> +      "cte",
> +      "csske"
> +    ],
> +    "model": {
> +      "name": "gen16a-base",
> +      "props": {
> +        "nnpa": true,
> +        "aen": true,
> +        "cmmnt": true,
> +        "vxpdeh": true,
> +        "aefsi": true,
> +        "diag318": true,
> +        "csske": true,
> +        "mepoch": true,
> +        "msa9": true,
> +        "msa8": true,
> +        "msa7": true,
> +        "msa6": true,
> +        "msa5": true,
> +        "msa4": true,
> +        "msa3": true,
> +        "msa2": true,
> +        "msa1": true,
> +        "sthyi": true,
> +        "edat": true,
> +        "ri": true,
> +        "deflate": true,
> +        "edat2": true,
> +        "etoken": true,
> +        "vx": true,
> +        "ipter": true,
> +        "pai": true,
> +        "paie": true,
> +        "mepochptff": true,
> +        "ap": true,
> +        "vxeh": true,
> +        "vxpd": true,
> +        "esop": true,
> +        "msa9_pckmo": true,
> +        "vxeh2": true,
> +        "esort": true,
> +        "appv": true,
> +        "apqi": true,
> +        "apft": true,
> +        "els": true,
> +        "iep": true,
> +        "appvi": true,
> +        "apqci": true,
> +        "cte": true,
> +        "ais": true,
> +        "bpb": true,
> +        "ctop": true,
> +        "gs": true,
> +        "ppa15": true,
> +        "zpci": true,
> +        "rdp": true,
> +        "sea_esop2": true,
> +        "beareh": true,
> +        "te": true,
> +        "cmm": true,
> +        "vxpdeh2": true
> +      }
> +    }
> +  },
> +  "id": "libvirt-41"
> +}
> +
>   {
>     "execute": "qmp_capabilities",
>     "id": "libvirt-1"
> @@ -36262,10 +36345,271 @@
>   }
>   
>   {
> -  "execute": "query-machines",
> +  "execute": "query-cpu-model-expansion",
> +  "arguments": {
> +    "type": "full",
> +    "model": {
> +      "name": "max"
> +    }
> +  },
> +  "id": "libvirt-4"
> +}
> +
> +{
> +  "return": {
> +    "deprecated-props": [
> +      "bpb",
> +      "te",
> +      "cte",
> +      "csske"
> +    ],
> +    "model": {
> +      "name": "gen15a-base",
> +      "props": {
> +        "pfmfi": false,
> +        "exrl": true,
> +        "stfle45": true,
> +        "kmctr-etdea-192": false,
> +        "kmctr-etdea-128": false,
> +        "nnpa": false,
> +        "cmma": false,
> +        "dateh2": false,
> +        "gen13ptff": false,
> +        "aen": true,
> +        "kmo-etdea-192": false,
> +        "kmf-etdea-192": false,
> +        "kmc-etdea-192": false,
> +        "kmac-tdea-192": false,
> +        "kimd-sha-512": true,
> +        "dateh": true,
> +        "km-aes-256": false,
> +        "km-aes-192": false,
> +        "kmctr-aes-256": false,
> +        "kma-gcm-eaes-192": false,
> +        "kmo-tdea-192": false,
> +        "kmf-tdea-192": false,
> +        "kmctr-tdea-192": false,
> +        "kmctr-tdea-128": false,
> +        "km-etdea-192": false,
> +        "kmc-tdea-192": false,
> +        "cmmnt": false,
> +        "iacc2": true,
> +        "parseh": false,
> +        "klmd-sha-512": true,
> +        "kma-gcm-eaes-128": false,
> +        "csst": true,
> +        "pcc-xts-aes-256": false,
> +        "pcc-xts-aes-128": false,
> +        "pckmo-aes-128": false,
> +        "idter": false,
> +        "idtes": true,
> +        "prno-trng-qrtcr": false,
> +        "pcc-cmac-eaes-128": false,
> +        "vxpdeh": false,
> +        "aefsi": true,
> +        "pckmo-etdea-192": false,
> +        "pckmo-etdea-128": false,
> +        "diag318": false,
> +        "pcc-cmac-eaes-256": false,
> +        "msa-base": true,
> +        "pcc-cmac-etdea-192": false,
> +        "hpma2": false,
> +        "kmctr-eaes-256": false,
> +        "csske": false,
> +        "csst2": true,
> +        "mepoch": false,
> +        "msa9": false,
> +        "msa6": false,
> +        "msa1": false,
> +        "kmctr-aes-192": false,
> +        "pckmo-aes-256": false,
> +        "sthyi": false,
> +        "stckf": true,
> +        "stfle": true,
> +        "edat": false,
> +        "etf3": true,
> +        "etf2": true,
> +        "hfpm": false,
> +        "ri": false,
> +        "pcc-xts-eaes-256": false,
> +        "deflate": false,
> +        "km-xts-eaes-256": false,
> +        "km-xts-eaes-128": false,
> +        "edat2": false,
> +        "hfpue": false,
> +        "kmo-aes-192": false,
> +        "kmf-aes-192": false,
> +        "km-eaes-192": false,
> +        "kmc-aes-192": false,
> +        "unpack": false,
> +        "dfp": false,
> +        "kmo-aes-128": false,
> +        "kmf-aes-128": false,
> +        "km-eaes-128": false,
> +        "kmctr-dea": false,
> +        "mvcos": true,
> +        "etoken": false,
> +        "pcc-cmac-tdea-192": false,
> +        "km-dea": false,
> +        "sprogp": true,
> +        "sigpif": false,
> +        "kmac-eaes-128": false,
> +        "ldisphp": true,
> +        "pckmo-aes-192": false,
> +        "ipter": false,
> +        "vx": true,
> +        "pai": false,
> +        "kimd-ghash": false,
> +        "emon": false,
> +        "kimd-sha-1": false,
> +        "cei": false,
> +        "cmpsceh": false,
> +        "kmctr-eaes-192": false,
> +        "kmctr-eaes-128": false,
> +        "ginste": true,
> +        "km-xts-aes-256": false,
> +        "kmac-eaes-256": false,
> +        "kmo-eaes-128": false,
> +        "kmf-eaes-128": false,
> +        "kmc-eaes-128": false,
> +        "kmac-aes-128": false,
> +        "paie": false,
> +        "dfppc": false,
> +        "dfpzc": false,
> +        "dfphp": false,
> +        "kmo-eaes-256": false,
> +        "kmf-eaes-256": false,
> +        "kmc-eaes-256": false,
> +        "kmac-aes-256": false,
> +        "kmac-etdea-192": false,
> +        "kmac-etdea-128": false,
> +        "kmo-dea": false,
> +        "kmf-dea": false,
> +        "km-edea": false,
> +        "kmc-dea": false,
> +        "stfle49": true,
> +        "klmd-sha-1": false,
> +        "mepochptff": false,
> +        "opc": false,
> +        "ap": false,
> +        "asnlxr": false,
> +        "gpereh": false,
> +        "minste2": true,
> +        "pcc-cmac-dea": false,
> +        "vxpd": false,
> +        "vxeh": true,
> +        "esop": true,
> +        "ectg": true,
> +        "ib": false,
> +        "km-tdea-192": false,
> +        "km-tdea-128": false,
> +        "msa9_pckmo": false,
> +        "siif": false,
> +        "kma-gcm-aes-256": false,
> +        "kma-gcm-aes-192": false,
> +        "kma-gcm-aes-128": false,
> +        "pcc-cmac-aes-256": false,
> +        "tsi": false,
> +        "vxeh2": true,
> +        "tpei": false,
> +        "esort": false,
> +        "esan3": true,
> +        "fpe": true,
> +        "ibs": false,
> +        "pcc-xts-eaes-128": false,
> +        "kmac-eaes-192": false,
> +        "zarch": true,
> +        "kmo-edea": false,
> +        "kmf-edea": false,
> +        "kmc-edea": false,
> +        "kmac-dea": false,
> +        "appv": false,
> +        "apqi": false,
> +        "apft": false,
> +        "stfle53": true,
> +        "ppno-sha-512-drng": false,
> +        "pcc-cmac-tdea-128": false,
> +        "kmo-aes-256": false,
> +        "kmf-aes-256": false,
> +        "km-eaes-256": false,
> +        "kmc-aes-256": false,
> +        "els": false,
> +        "sief2": false,
> +        "eimm": true,
> +        "pcc-cmac-etdea-128": false,
> +        "iep": true,
> +        "irbm": false,
> +        "km-xts-aes-128": false,
> +        "srs": true,
> +        "appvi": false,
> +        "apqci": false,
> +        "kmo-tdea-128": false,
> +        "kmf-tdea-128": false,
> +        "km-etdea-128": false,
> +        "kmc-tdea-128": false,
> +        "kss": false,
> +        "cte": false,
> +        "kmac-edea": false,
> +        "prno-trng": true,
> +        "kma-gcm-eaes-256": false,
> +        "ais": true,
> +        "fpseh": true,
> +        "ltlbc": true,
> +        "ldisp": true,
> +        "kmo-etdea-128": false,
> +        "kmf-etdea-128": false,
> +        "kmc-etdea-128": false,
> +        "kmac-tdea-128": false,
> +        "pcc-cmac-edea": false,
> +        "bpb": false,
> +        "kmctr-edea": false,
> +        "64bscao": false,
> +        "ctop": false,
> +        "kmo-eaes-192": false,
> +        "kmf-eaes-192": false,
> +        "kmc-eaes-192": false,
> +        "kmac-aes-192": false,
> +        "gs": false,
> +        "sema": false,
> +        "etf3eh": true,
> +        "etf2eh": true,
> +        "eec": false,
> +        "pcc-cmac-eaes-192": false,
> +        "ppa15": false,
> +        "kmc-prng": false,
> +        "zpci": true,
> +        "rdp": false,
> +        "nonqks": false,
> +        "sea_esop2": true,
> +        "minste3": true,
> +        "beareh": false,
> +        "pfpo": false,
> +        "te": false,
> +        "msa8-base": true,
> +        "msa4-base": true,
> +        "msa3-base": true,
> +        "msa5-base": true,
> +        "pcc-cmac-aes-192": false,
> +        "cmm": false,
> +        "tods": false,
> +        "pcc-cmac-aes-128": false,
> +        "plo": true,
> +        "pckmo-edea": false,
> +        "gsls": false,
> +        "kmctr-aes-128": false,
> +        "skey": false,
> +        "vxpdeh2": false
> +      }
> +    }
> +  },
>     "id": "libvirt-4"
>   }
>   
> +{
> +  "execute": "query-machines",
> +  "id": "libvirt-5"
> +}
> +
>   {
>     "return": [
>       {
> @@ -36568,5 +36912,5 @@
>         "default-ram-id": "s390.ram"
>       }
>     ],
> -  "id": "libvirt-4"
> +  "id": "libvirt-5"
>   }
> diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml
> index 5e8db88e52..b3265dcc18 100644
> --- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml
> +++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml
> @@ -133,6 +133,7 @@
>     <flag name='virtio-sound'/>
>     <flag name='netdev.user'/>
>     <flag name='snapshot-internal-qmp'/>
> +  <flag name='query-cpu-model-expansion.deprecated-props'/>
>     <version>9001000</version>
>     <microcodeVersion>39100246</microcodeVersion>
>     <package>v9.1.0</package>
> @@ -356,6 +357,12 @@
>       <property name='msa3-base' type='boolean' value='true'/>
>       <property name='msa5-base' type='boolean' value='true'/>
>       <property name='tods' type='boolean' value='false'/>
> +    <deprecatedFeatures>
> +      <property name='bpb'/>
> +      <property name='te'/>
> +      <property name='cte'/>
> +      <property name='csske'/>
> +    </deprecatedFeatures>
>     </hostCPU>
>     <cpu type='tcg' name='z13' typename='z13-s390x-cpu' usable='no'>
>       <blocker name='ppno-sha-512-drng'/>
> diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies
> index 91c9a049bf..9a58acaf08 100644
> --- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies
> +++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.replies
> @@ -32411,6 +32411,89 @@
>     "id": "libvirt-40"
>   }
>   
> +{
> +  "execute": "query-cpu-model-expansion",
> +  "arguments": {
> +    "type": "full",
> +    "model": {
> +      "name": "host"
> +    }
> +  },
> +  "id": "libvirt-41"
> +}
> +
> +{
> +  "return": {
> +    "deprecated-props": [
> +      "bpb",
> +      "te",
> +      "cte",
> +      "csske"
> +    ],
> +    "model": {
> +      "name": "gen16a-base",
> +      "props": {
> +        "nnpa": true,
> +        "aen": true,
> +        "cmmnt": true,
> +        "vxpdeh": true,
> +        "aefsi": true,
> +        "diag318": true,
> +        "csske": true,
> +        "mepoch": true,
> +        "msa9": true,
> +        "msa8": true,
> +        "msa7": true,
> +        "msa6": true,
> +        "msa5": true,
> +        "msa4": true,
> +        "msa3": true,
> +        "msa2": true,
> +        "msa1": true,
> +        "sthyi": true,
> +        "edat": true,
> +        "ri": true,
> +        "deflate": true,
> +        "edat2": true,
> +        "etoken": true,
> +        "vx": true,
> +        "ipter": true,
> +        "pai": true,
> +        "paie": true,
> +        "mepochptff": true,
> +        "ap": true,
> +        "vxeh": true,
> +        "vxpd": true,
> +        "esop": true,
> +        "msa9_pckmo": true,
> +        "vxeh2": true,
> +        "esort": true,
> +        "appv": true,
> +        "apqi": true,
> +        "apft": true,
> +        "els": true,
> +        "iep": true,
> +        "appvi": true,
> +        "apqci": true,
> +        "cte": true,
> +        "ais": true,
> +        "bpb": true,
> +        "ctop": true,
> +        "gs": true,
> +        "ppa15": true,
> +        "zpci": true,
> +        "rdp": true,
> +        "sea_esop2": true,
> +        "beareh": true,
> +        "te": true,
> +        "cmm": true,
> +        "vxpdeh2": true
> +      }
> +    }
> +  },
> +  "id": "libvirt-41"
> +}
> +
>   {
>     "execute": "qmp_capabilities",
>     "id": "libvirt-1"
> @@ -36421,10 +36504,271 @@
>   }
>   
>   {
> -  "execute": "query-machines",
> +  "execute": "query-cpu-model-expansion",
> +  "arguments": {
> +    "type": "full",
> +    "model": {
> +      "name": "max"
> +    }
> +  },
> +  "id": "libvirt-4"
> +}
> +
> +{
> +  "return": {
> +    "deprecated-props": [
> +      "bpb",
> +      "te",
> +      "cte",
> +      "csske"
> +    ],
> +    "model": {
> +      "name": "gen15a-base",
> +      "props": {
> +        "pfmfi": false,
> +        "exrl": true,
> +        "stfle45": true,
> +        "kmctr-etdea-192": false,
> +        "kmctr-etdea-128": false,
> +        "nnpa": false,
> +        "cmma": false,
> +        "dateh2": false,
> +        "gen13ptff": false,
> +        "aen": true,
> +        "kmo-etdea-192": false,
> +        "kmf-etdea-192": false,
> +        "kmc-etdea-192": false,
> +        "kmac-tdea-192": false,
> +        "kimd-sha-512": true,
> +        "dateh": true,
> +        "km-aes-256": false,
> +        "km-aes-192": false,
> +        "kmctr-aes-256": false,
> +        "kma-gcm-eaes-192": false,
> +        "kmo-tdea-192": false,
> +        "kmf-tdea-192": false,
> +        "kmctr-tdea-192": false,
> +        "kmctr-tdea-128": false,
> +        "km-etdea-192": false,
> +        "kmc-tdea-192": false,
> +        "cmmnt": false,
> +        "iacc2": true,
> +        "parseh": false,
> +        "klmd-sha-512": true,
> +        "kma-gcm-eaes-128": false,
> +        "csst": true,
> +        "pcc-xts-aes-256": false,
> +        "pcc-xts-aes-128": false,
> +        "pckmo-aes-128": false,
> +        "idter": false,
> +        "idtes": true,
> +        "prno-trng-qrtcr": false,
> +        "pcc-cmac-eaes-128": false,
> +        "vxpdeh": false,
> +        "aefsi": true,
> +        "pckmo-etdea-192": false,
> +        "pckmo-etdea-128": false,
> +        "diag318": false,
> +        "pcc-cmac-eaes-256": false,
> +        "msa-base": true,
> +        "pcc-cmac-etdea-192": false,
> +        "hpma2": false,
> +        "kmctr-eaes-256": false,
> +        "csske": false,
> +        "csst2": true,
> +        "mepoch": false,
> +        "msa9": false,
> +        "msa6": false,
> +        "msa1": false,
> +        "kmctr-aes-192": false,
> +        "pckmo-aes-256": false,
> +        "sthyi": false,
> +        "stckf": true,
> +        "stfle": true,
> +        "edat": false,
> +        "etf3": true,
> +        "etf2": true,
> +        "hfpm": false,
> +        "ri": false,
> +        "pcc-xts-eaes-256": false,
> +        "deflate": false,
> +        "km-xts-eaes-256": false,
> +        "km-xts-eaes-128": false,
> +        "edat2": false,
> +        "hfpue": false,
> +        "kmo-aes-192": false,
> +        "kmf-aes-192": false,
> +        "km-eaes-192": false,
> +        "kmc-aes-192": false,
> +        "unpack": false,
> +        "dfp": false,
> +        "kmo-aes-128": false,
> +        "kmf-aes-128": false,
> +        "km-eaes-128": false,
> +        "kmctr-dea": false,
> +        "mvcos": true,
> +        "etoken": false,
> +        "pcc-cmac-tdea-192": false,
> +        "km-dea": false,
> +        "sprogp": true,
> +        "sigpif": false,
> +        "kmac-eaes-128": false,
> +        "ldisphp": true,
> +        "pckmo-aes-192": false,
> +        "ipter": false,
> +        "vx": true,
> +        "pai": false,
> +        "kimd-ghash": false,
> +        "emon": false,
> +        "kimd-sha-1": false,
> +        "cei": false,
> +        "cmpsceh": false,
> +        "kmctr-eaes-192": false,
> +        "kmctr-eaes-128": false,
> +        "ginste": true,
> +        "km-xts-aes-256": false,
> +        "kmac-eaes-256": false,
> +        "kmo-eaes-128": false,
> +        "kmf-eaes-128": false,
> +        "kmc-eaes-128": false,
> +        "kmac-aes-128": false,
> +        "paie": false,
> +        "dfppc": false,
> +        "dfpzc": false,
> +        "dfphp": false,
> +        "kmo-eaes-256": false,
> +        "kmf-eaes-256": false,
> +        "kmc-eaes-256": false,
> +        "kmac-aes-256": false,
> +        "kmac-etdea-192": false,
> +        "kmac-etdea-128": false,
> +        "kmo-dea": false,
> +        "kmf-dea": false,
> +        "km-edea": false,
> +        "kmc-dea": false,
> +        "stfle49": true,
> +        "klmd-sha-1": false,
> +        "mepochptff": false,
> +        "opc": false,
> +        "ap": false,
> +        "asnlxr": false,
> +        "gpereh": false,
> +        "minste2": true,
> +        "pcc-cmac-dea": false,
> +        "vxpd": false,
> +        "vxeh": true,
> +        "esop": true,
> +        "ectg": true,
> +        "ib": false,
> +        "km-tdea-192": false,
> +        "km-tdea-128": false,
> +        "msa9_pckmo": false,
> +        "siif": false,
> +        "kma-gcm-aes-256": false,
> +        "kma-gcm-aes-192": false,
> +        "kma-gcm-aes-128": false,
> +        "pcc-cmac-aes-256": false,
> +        "tsi": false,
> +        "vxeh2": true,
> +        "tpei": false,
> +        "esort": false,
> +        "esan3": true,
> +        "fpe": true,
> +        "ibs": false,
> +        "pcc-xts-eaes-128": false,
> +        "kmac-eaes-192": false,
> +        "zarch": true,
> +        "kmo-edea": false,
> +        "kmf-edea": false,
> +        "kmc-edea": false,
> +        "kmac-dea": false,
> +        "appv": false,
> +        "apqi": false,
> +        "apft": false,
> +        "stfle53": true,
> +        "ppno-sha-512-drng": false,
> +        "pcc-cmac-tdea-128": false,
> +        "kmo-aes-256": false,
> +        "kmf-aes-256": false,
> +        "km-eaes-256": false,
> +        "kmc-aes-256": false,
> +        "els": false,
> +        "sief2": false,
> +        "eimm": true,
> +        "pcc-cmac-etdea-128": false,
> +        "iep": true,
> +        "irbm": false,
> +        "km-xts-aes-128": false,
> +        "srs": true,
> +        "appvi": false,
> +        "apqci": false,
> +        "kmo-tdea-128": false,
> +        "kmf-tdea-128": false,
> +        "km-etdea-128": false,
> +        "kmc-tdea-128": false,
> +        "kss": false,
> +        "cte": false,
> +        "kmac-edea": false,
> +        "prno-trng": true,
> +        "kma-gcm-eaes-256": false,
> +        "ais": true,
> +        "fpseh": true,
> +        "ltlbc": true,
> +        "ldisp": true,
> +        "kmo-etdea-128": false,
> +        "kmf-etdea-128": false,
> +        "kmc-etdea-128": false,
> +        "kmac-tdea-128": false,
> +        "pcc-cmac-edea": false,
> +        "bpb": false,
> +        "kmctr-edea": false,
> +        "64bscao": false,
> +        "ctop": false,
> +        "kmo-eaes-192": false,
> +        "kmf-eaes-192": false,
> +        "kmc-eaes-192": false,
> +        "kmac-aes-192": false,
> +        "gs": false,
> +        "sema": false,
> +        "etf3eh": true,
> +        "etf2eh": true,
> +        "eec": false,
> +        "pcc-cmac-eaes-192": false,
> +        "ppa15": false,
> +        "kmc-prng": false,
> +        "zpci": true,
> +        "rdp": false,
> +        "nonqks": false,
> +        "sea_esop2": true,
> +        "minste3": true,
> +        "beareh": false,
> +        "pfpo": false,
> +        "te": false,
> +        "msa8-base": true,
> +        "msa4-base": true,
> +        "msa3-base": true,
> +        "msa5-base": true,
> +        "pcc-cmac-aes-192": false,
> +        "cmm": false,
> +        "tods": false,
> +        "pcc-cmac-aes-128": false,
> +        "plo": true,
> +        "pckmo-edea": false,
> +        "gsls": false,
> +        "kmctr-aes-128": false,
> +        "skey": false,
> +        "vxpdeh2": false
> +      }
> +    }
> +  },
>     "id": "libvirt-4"
>   }
>   
> +{
> +  "execute": "query-machines",
> +  "id": "libvirt-5"
> +}
> +
>   {
>     "return": [
>       {
> @@ -36737,5 +37081,5 @@
>         "default-ram-id": "s390.ram"
>       }
>     ],
> -  "id": "libvirt-4"
> +  "id": "libvirt-5"
>   }
> diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml
> index 79a149d187..c3a9b62ec0 100644
> --- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml
> +++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml
> @@ -136,6 +136,7 @@
>     <flag name='chardev-reconnect-miliseconds'/>
>     <flag name='virtio-ccw.loadparm'/>
>     <flag name='netdev-stream-reconnect-miliseconds'/>
> +  <flag name='query-cpu-model-expansion.deprecated-props'/>
>     <version>9001050</version>
>     <microcodeVersion>39100247</microcodeVersion>
>     <package>v9.1.0-1348-g11b8920ed2</package>
> @@ -360,6 +361,12 @@
>       <property name='msa3-base' type='boolean' value='true'/>
>       <property name='msa5-base' type='boolean' value='true'/>
>       <property name='tods' type='boolean' value='false'/>
> +    <deprecatedFeatures>
> +      <property name='bpb'/>
> +      <property name='te'/>
> +      <property name='cte'/>
> +      <property name='csske'/>
> +    </deprecatedFeatures>
>     </hostCPU>
>     <cpu type='tcg' name='z13' typename='z13-s390x-cpu' usable='no'>
>       <blocker name='ppno-sha-512-drng'/>


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

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Wolfgang Wendt
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
Re: [PATCH v2 3/5] qemu_capabilities: query deprecated features for host-model
Posted by Jiri Denemark 4 weeks, 1 day ago
On Mon, Nov 25, 2024 at 14:46:37 -0500, Collin Walling wrote:
> Add QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_DEPRECATED_PROPS for detecting
> if query-cpu-model-expansion can report deprecated CPU model properties.
> QEMU introduced this capability in 9.1 release.  Add flag and deprecated
> features to the capabilities test data for QEMU 9.1 and 9.2 replies/XML
> since it can now be accounted for.
> 
> When probing for the host CPU, perform a full CPU model expansion to
> retrieve the list of features deprecated across the entire architecture.
> The list and count are stored in the host's CPU model info within the
> QEMU capabilities.  Other info resulting from this query (e.g. model
> name, etc) is ignored.
> 
> The new capabilities flag is used to fence off the extra query for
> architectures/QEMU binaries that do not report deprecated CPU model
> features.
> 
> Signed-off-by: Collin Walling <walling@linux.ibm.com>
> ---
>  src/qemu/qemu_capabilities.c                  |  38 ++
>  src/qemu/qemu_capabilities.h                  |   1 +
>  .../caps_9.1.0_s390x.replies                  | 348 +++++++++++++++++-
>  .../qemucapabilitiesdata/caps_9.1.0_s390x.xml |   7 +
>  .../caps_9.2.0_s390x.replies                  | 348 +++++++++++++++++-
>  .../qemucapabilitiesdata/caps_9.2.0_s390x.xml |   7 +
>  6 files changed, 745 insertions(+), 4 deletions(-)

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