]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Perform full expansion on ARM
authorAndrea Bolognani <abologna@redhat.com>
Mon, 24 Jun 2019 12:16:17 +0000 (14:16 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Thu, 7 Nov 2019 15:09:14 +0000 (16:09 +0100)
The ARM implementation of query-cpu-model-expansion only
supports full expansion, so we have to make sure we're using
that expansion mode if we want to obtain any useful data.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_capabilities.c
tests/qemucapabilitiesdata/caps_4.2.0.aarch64.replies
tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml

index 363fb0e197073a6d67b047661decd3113f50c49e..fc6473651c8db5afa89d08cdf09a2134ac98c25e 100644 (file)
@@ -2559,10 +2559,13 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCapsPtr qemuCaps,
      * the initial static expansion to get all variants of feature names.
      */
     if (ARCH_IS_X86(qemuCaps->arch) &&
-        !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CANONICAL_CPU_FEATURES))
+        !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CANONICAL_CPU_FEATURES)) {
         type = QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC_FULL;
-    else
+    } else if (ARCH_IS_ARM(qemuCaps->arch)) {
+        type = QEMU_MONITOR_CPU_MODEL_EXPANSION_FULL;
+    } else {
         type = QEMU_MONITOR_CPU_MODEL_EXPANSION_STATIC;
+    }
 
     /* Older s390 models do not report a feature set */
     if (ARCH_IS_S390(qemuCaps->arch))
index efd193d90d1a697b9261a6f9a86c957acb6e79e6..127f121680f91405df5394c559a0d404a0b551ce 100644 (file)
 {
   "execute": "query-cpu-model-expansion",
   "arguments": {
-    "type": "static",
+    "type": "full",
     "model": {
       "name": "host"
     }
 }
 
 {
-  "id": "libvirt-42",
+  "return": {
+    "model": {
+      "name": "host",
+      "props": {
+        "sve768": false,
+        "sve128": true,
+        "sve1024": false,
+        "sve1280": false,
+        "sve896": false,
+        "sve256": true,
+        "sve1536": false,
+        "sve1792": false,
+        "sve384": false,
+        "sve": true,
+        "sve2048": false,
+        "sve512": true,
+        "aarch64": true,
+        "pmu": true,
+        "sve1920": false,
+        "sve1152": false,
+        "sve640": false,
+        "sve1408": false,
+        "sve1664": false
+      }
+    }
+  },
+  "id": "libvirt-42"
+}
+
+{
+  "execute": "query-cpu-model-expansion",
+  "arguments": {
+    "type": "full",
+    "model": {
+      "name": "host",
+      "props": {
+        "migratable": false
+      }
+    }
+  },
+  "id": "libvirt-43"
+}
+
+{
+  "id": "libvirt-43",
   "error": {
     "class": "GenericError",
-    "desc": "The requested expansion type is not supported"
+    "desc": "Parameter 'migratable' is unexpected"
   }
 }
 
 {
   "execute": "query-cpu-model-expansion",
   "arguments": {
-    "type": "static",
+    "type": "full",
     "model": {
       "name": "max"
     }
 }
 
 {
-  "id": "libvirt-3",
+  "return": {
+    "model": {
+      "name": "max",
+      "props": {
+        "sve768": true,
+        "sve128": true,
+        "sve1024": true,
+        "sve1280": true,
+        "sve896": true,
+        "sve256": true,
+        "sve1536": true,
+        "sve1792": true,
+        "sve384": true,
+        "sve": true,
+        "sve2048": true,
+        "sve512": true,
+        "aarch64": true,
+        "pmu": true,
+        "sve1920": true,
+        "sve1152": true,
+        "sve640": true,
+        "sve1408": true,
+        "sve1664": true
+      }
+    }
+  },
+  "id": "libvirt-3"
+}
+
+{
+  "execute": "query-cpu-model-expansion",
+  "arguments": {
+    "type": "full",
+    "model": {
+      "name": "max",
+      "props": {
+        "migratable": false
+      }
+    }
+  },
+  "id": "libvirt-4"
+}
+
+{
+  "id": "libvirt-4",
   "error": {
     "class": "GenericError",
-    "desc": "The requested expansion type is not supported"
+    "desc": "Parameter 'migratable' is unexpected"
   }
 }
index a4cb7ba4e6b99a8ab981a2a64db76b9bf1f4204a..17960460fbb812199534f0651d827b811e83a4e3 100644 (file)
   <microcodeVersion>61700242</microcodeVersion>
   <package>v4.1.0-2221-g36609b4fa3</package>
   <arch>aarch64</arch>
+  <hostCPU type='kvm' model='host' migratability='no'>
+    <property name='sve768' type='boolean' value='false'/>
+    <property name='sve128' type='boolean' value='true'/>
+    <property name='sve1024' type='boolean' value='false'/>
+    <property name='sve1280' type='boolean' value='false'/>
+    <property name='sve896' type='boolean' value='false'/>
+    <property name='sve256' type='boolean' value='true'/>
+    <property name='sve1536' type='boolean' value='false'/>
+    <property name='sve1792' type='boolean' value='false'/>
+    <property name='sve384' type='boolean' value='false'/>
+    <property name='sve' type='boolean' value='true'/>
+    <property name='sve2048' type='boolean' value='false'/>
+    <property name='sve512' type='boolean' value='true'/>
+    <property name='aarch64' type='boolean' value='true'/>
+    <property name='pmu' type='boolean' value='true'/>
+    <property name='sve1920' type='boolean' value='false'/>
+    <property name='sve1152' type='boolean' value='false'/>
+    <property name='sve640' type='boolean' value='false'/>
+    <property name='sve1408' type='boolean' value='false'/>
+    <property name='sve1664' type='boolean' value='false'/>
+  </hostCPU>
+  <hostCPU type='tcg' model='max' migratability='no'>
+    <property name='sve768' type='boolean' value='true'/>
+    <property name='sve128' type='boolean' value='true'/>
+    <property name='sve1024' type='boolean' value='true'/>
+    <property name='sve1280' type='boolean' value='true'/>
+    <property name='sve896' type='boolean' value='true'/>
+    <property name='sve256' type='boolean' value='true'/>
+    <property name='sve1536' type='boolean' value='true'/>
+    <property name='sve1792' type='boolean' value='true'/>
+    <property name='sve384' type='boolean' value='true'/>
+    <property name='sve' type='boolean' value='true'/>
+    <property name='sve2048' type='boolean' value='true'/>
+    <property name='sve512' type='boolean' value='true'/>
+    <property name='aarch64' type='boolean' value='true'/>
+    <property name='pmu' type='boolean' value='true'/>
+    <property name='sve1920' type='boolean' value='true'/>
+    <property name='sve1152' type='boolean' value='true'/>
+    <property name='sve640' type='boolean' value='true'/>
+    <property name='sve1408' type='boolean' value='true'/>
+    <property name='sve1664' type='boolean' value='true'/>
+  </hostCPU>
   <cpu type='kvm' name='pxa262'/>
   <cpu type='kvm' name='pxa270-a0'/>
   <cpu type='kvm' name='arm1136'/>