]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Probe host CPU after capabilities
authorJiri Denemark <jdenemar@redhat.com>
Mon, 17 Jun 2019 11:16:51 +0000 (13:16 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 19 Jun 2019 22:22:38 +0000 (00:22 +0200)
The way we call query-cpu-model-expansion will rely on some capabilities
bits. Let's make sure all capabilities are set before probing host CPU.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_capabilities.c
tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
tests/qemucapabilitiesdata/caps_3.1.0.x86_64.replies
tests/qemucapabilitiesdata/caps_4.0.0.x86_64.replies
tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies

index cf8237da6cc61a92aae91022549d0dd4bca7590d..3af6923e6fb101b1eae2fc924aac899b7c04b028 100644 (file)
@@ -4504,8 +4504,6 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
         return -1;
     if (virQEMUCapsProbeQMPSchemaCapabilities(qemuCaps, mon) < 0)
         return -1;
-    if (virQEMUCapsProbeQMPHostCPU(qemuCaps, mon, false) < 0)
-        return -1;
     if (virQEMUCapsProbeQMPGICCapabilities(qemuCaps, mon) < 0)
         return -1;
     if (virQEMUCapsProbeQMPSEVCapabilities(qemuCaps, mon) < 0)
@@ -4513,6 +4511,12 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
 
     virQEMUCapsInitProcessCaps(qemuCaps);
 
+    /* The following probes rely on other previously probed capabilities.
+     * No capabilities bits should be set below this point. */
+
+    if (virQEMUCapsProbeQMPHostCPU(qemuCaps, mon, false) < 0)
+        return -1;
+
     return 0;
 }
 
index e78ddeb57e893b4f318b23769c2d955a6612247b..3a2f854531de93b4ec2df4068045f66821a6283c 100644 (file)
   "id": "libvirt-44"
 }
 
+{
+  "execute": "query-sev-capabilities",
+  "id": "libvirt-45"
+}
+
+{
+  "return": {
+    "reduced-phys-bits": 1,
+    "cbitpos": 47,
+    "cert-chain": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA",
+    "pdh": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA"
+  },
+  "id": "libvirt-45"
+}
+
 {
   "execute": "query-cpu-model-expansion",
   "arguments": {
       "name": "host"
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
-}
-
-{
-  "execute": "query-sev-capabilities",
-  "id": "libvirt-49"
-}
-
-{
-  "return": {
-    "reduced-phys-bits": 1,
-    "cbitpos": 47,
-    "cert-chain": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA",
-    "pdh": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA"
-  },
   "id": "libvirt-49"
 }
 
index b618f8c741e817230eb2892362f6a1eb438eca6b..b2ec8d75d390bf97a6fd427a23fcbe720667ee17 100644 (file)
   "id": "libvirt-44"
 }
 
+{
+  "execute": "query-sev-capabilities",
+  "id": "libvirt-45"
+}
+
+{
+  "id": "libvirt-45",
+  "error": {
+    "class": "GenericError",
+    "desc": "SEV feature is not available"
+  }
+}
+
 {
   "execute": "query-cpu-model-expansion",
   "arguments": {
       "name": "host"
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
-}
-
-{
-  "execute": "query-sev-capabilities",
   "id": "libvirt-49"
 }
 
-{
-  "id": "libvirt-49",
-  "error": {
-    "class": "GenericError",
-    "desc": "SEV feature is not available"
-  }
-}
-
 {
   "execute": "qmp_capabilities",
   "id": "libvirt-1"
index 2b3827db9adf8aaf31a4c0f11674596a05d2dc1a..b8b117ffaf87fb4deb09a7cd56ca0399c1d9b31e 100644 (file)
   "id": "libvirt-44"
 }
 
+{
+  "execute": "query-sev-capabilities",
+  "id": "libvirt-45"
+}
+
+{
+  "id": "libvirt-45",
+  "error": {
+    "class": "GenericError",
+    "desc": "SEV feature is not available"
+  }
+}
+
 {
   "execute": "query-cpu-model-expansion",
   "arguments": {
       "name": "host"
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
-}
-
-{
-  "execute": "query-sev-capabilities",
   "id": "libvirt-49"
 }
 
-{
-  "id": "libvirt-49",
-  "error": {
-    "class": "GenericError",
-    "desc": "SEV feature is not available"
-  }
-}
-
 {
   "execute": "qmp_capabilities",
   "id": "libvirt-1"
index 26d2d659897cf597146ae9365c521e8d3faf90ce..b155e2a24257d52392793e100e9b541e622d75e4 100644 (file)
   "id": "libvirt-44"
 }
 
+{
+  "execute": "query-sev-capabilities",
+  "id": "libvirt-45"
+}
+
+{
+  "id": "libvirt-45",
+  "error": {
+    "class": "GenericError",
+    "desc": "SEV feature is not available"
+  }
+}
+
 {
   "execute": "query-cpu-model-expansion",
   "arguments": {
       "name": "host"
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
-}
-
-{
-  "execute": "query-sev-capabilities",
   "id": "libvirt-49"
 }
 
-{
-  "id": "libvirt-49",
-  "error": {
-    "class": "GenericError",
-    "desc": "SEV feature is not available"
-  }
-}
-
 {
   "execute": "qmp_capabilities",
   "id": "libvirt-1"
index f175a4284beadc90967d1bf8cfbaf261b07a1826..a07082781f58318d45ef7c402d5fc768115e5638 100644 (file)
   "id": "libvirt-44"
 }
 
+{
+  "execute": "query-sev-capabilities",
+  "id": "libvirt-45"
+}
+
+{
+  "id": "libvirt-45",
+  "error": {
+    "class": "GenericError",
+    "desc": "SEV feature is not available"
+  }
+}
+
 {
   "execute": "query-cpu-model-expansion",
   "arguments": {
       "name": "host"
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
       }
     }
   },
-  "id": "libvirt-48"
-}
-
-{
-  "execute": "query-sev-capabilities",
   "id": "libvirt-49"
 }
 
-{
-  "id": "libvirt-49",
-  "error": {
-    "class": "GenericError",
-    "desc": "SEV feature is not available"
-  }
-}
-
 {
   "execute": "qmp_capabilities",
   "id": "libvirt-1"