]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Use virQEMUCapsCacheLookupDefault instead of lookup by arch
authorErik Skultety <eskultet@redhat.com>
Fri, 3 Jul 2020 12:26:13 +0000 (14:26 +0200)
committerErik Skultety <eskultet@redhat.com>
Wed, 8 Jul 2020 08:55:07 +0000 (10:55 +0200)
Firstly, SEV is present only on AMD, so we can safely assume x86.
Secondly, the problem with looking up capabilities in the cache by arch
is that it's using virHashSearch with a callback to find the right
capabilities and get the binary name from it as well, but since the
cache is empty, it will return NULL and we won't get the corresponding
binary name out of the lookup either. Then, during the cache validation
we try to create a new cache entry for the emulator, but since we don't
have the binary name, nothing gets created.
Therefore, virQEMUCapsCacheLookupDefault is used to fix this issue,
because it doesn't rely on the capabilities cache to construct the
emulator binary name.

https://bugzilla.redhat.com/show_bug.cgi?id=1852311

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/qemu/qemu_driver.c

index a5b38b3d24bffdede38a14abdd10444fa806f2b5..cd8d7ffb562053e89bb09ce0bc850f72e342a623 100644 (file)
@@ -22823,8 +22823,10 @@ qemuNodeGetSEVInfo(virConnectPtr conn,
     if (virNodeGetSevInfoEnsureACL(conn) < 0)
         return -1;
 
-    qemucaps = virQEMUCapsCacheLookupByArch(driver->qemuCapsCache,
-                                            virArchFromHost());
+    qemucaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache,
+                                             NULL, NULL, NULL, NULL,
+                                             NULL, NULL, NULL);
+
     if (!qemucaps)
         return -1;