diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 93c3ec18b6..f8ea66b577 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4540,7 +4540,7 @@ virQEMUCapsNewData(const char *binary, priv->libDir, priv->runUid, priv->runGid, - priv->microcodeVersion, + virHostCPUGetMicrocodeVersion(), priv->kernelVersion); } @@ -4623,8 +4623,7 @@ virFileCachePtr virQEMUCapsCacheNew(const char *libDir, const char *cacheDir, uid_t runUid, - gid_t runGid, - unsigned int microcodeVersion) + gid_t runGid) { char *capsCacheDir = NULL; virFileCachePtr cache = NULL; @@ -4648,7 +4647,6 @@ virQEMUCapsCacheNew(const char *libDir, priv->runUid = runUid; priv->runGid = runGid; - priv->microcodeVersion = microcodeVersion; priv->kvmUsable = VIR_TRISTATE_BOOL_ABSENT; if (uname(&uts) == 0 && @@ -4670,8 +4668,11 @@ virQEMUCapsPtr virQEMUCapsCacheLookup(virFileCachePtr cache, const char *binary) { + virQEMUCapsCachePrivPtr priv = virFileCacheGetPriv(cache); virQEMUCapsPtr ret = NULL; + priv->microcodeVersion = virHostCPUGetMicrocodeVersion(); + ret = virFileCacheLookup(cache, binary); VIR_DEBUG("Returning caps %p for %s", ret, binary); @@ -4725,6 +4726,7 @@ virQEMUCapsPtr virQEMUCapsCacheLookupByArch(virFileCachePtr cache, virArch arch) { + virQEMUCapsCachePrivPtr priv = virFileCacheGetPriv(cache); virQEMUCapsPtr ret = NULL; const char *binaryFilters[] = { "qemu-system-", @@ -4737,6 +4739,8 @@ virQEMUCapsCacheLookupByArch(virFileCachePtr cache, size_t i; size_t j; + priv->microcodeVersion = virHostCPUGetMicrocodeVersion(); + for (i = 0; i < ARRAY_CARDINALITY(binaryFilters); i++) { for (j = 0; j < ARRAY_CARDINALITY(archs); j++) { struct virQEMUCapsSearchData data = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 2fbd9c1e58..23ecef8c63 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -588,8 +588,7 @@ void virQEMUCapsFilterByMachineType(virQEMUCapsPtr qemuCaps, virFileCachePtr virQEMUCapsCacheNew(const char *libDir, const char *cacheDir, uid_t uid, - gid_t gid, - unsigned int microcodeVersion); + gid_t gid); virQEMUCapsPtr virQEMUCapsCacheLookup(virFileCachePtr cache, const char *binary); virQEMUCapsPtr virQEMUCapsCacheLookupCopy(virFileCachePtr cache, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 7e334d0d8d..4510b0ce60 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -584,8 +584,6 @@ qemuStateInitialize(bool privileged, char *hugepagePath = NULL; char *memoryBackingPath = NULL; size_t i; - virCPUDefPtr hostCPU = NULL; - unsigned int microcodeVersion = 0; if (VIR_ALLOC(qemu_driver) < 0) return -1; @@ -808,15 +806,10 @@ qemuStateInitialize(bool privileged, run_gid = cfg->group; } - if ((hostCPU = virCPUProbeHost(virArchFromHost()))) - microcodeVersion = hostCPU->microcodeVersion; - virCPUDefFree(hostCPU); - qemu_driver->qemuCapsCache = virQEMUCapsCacheNew(cfg->libDir, cfg->cacheDir, run_uid, - run_gid, - microcodeVersion); + run_gid); if (!qemu_driver->qemuCapsCache) goto error; diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 3ee8a0c6c6..763f511bcf 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -740,7 +740,7 @@ int qemuTestDriverInit(virQEMUDriver *driver) /* Using /dev/null for libDir and cacheDir automatically produces errors * upon attempt to use any of them */ - driver->qemuCapsCache = virQEMUCapsCacheNew("/dev/null", "/dev/null", 0, 0, 0); + driver->qemuCapsCache = virQEMUCapsCacheNew("/dev/null", "/dev/null", 0, 0); if (!driver->qemuCapsCache) goto error;