mirror of
				https://gitlab.com/libvirt/libvirt.git
				synced 2025-10-30 20:24:58 +03:00 
			
		
		
		
	Compare commits
	
		
			16 Commits
		
	
	
		
			v8.5.0-rc1
			...
			v5.1-maint
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 2a3f95a407 | ||
|  | c5085b7a90 | ||
|  | 58c7c3fc4a | ||
|  | 111bb6555c | ||
|  | 4aa6ce7dad | ||
|  | 771a7f2fa8 | ||
|  | 44a0bcdb10 | ||
|  | 2686c9e10d | ||
|  | 54fb85c213 | ||
|  | b735dde844 | ||
|  | 1442aa99be | ||
|  | 3e02ee9b5d | ||
|  | 095c450366 | ||
|  | b990740b12 | ||
|  | e8ec259220 | ||
|  | 092320f10b | 
| @@ -33,6 +33,7 @@ AC_DEFUN([LIBVIRT_STORAGE_CHECK_RBD], [ | ||||
|       old_LIBS="$LIBS" | ||||
|       LIBS="$LIBS $LIBRBD_LIBS" | ||||
|       AC_CHECK_FUNCS([rbd_get_features],[],[LIBRBD_FOUND=no]) | ||||
|       AC_CHECK_FUNCS([rbd_list2]) | ||||
|       LIBS="$old_LIBS" | ||||
|     fi | ||||
|  | ||||
|   | ||||
| @@ -64,6 +64,28 @@ remoteAdmClientNew(virNetServerClientPtr client ATTRIBUTE_UNUSED, | ||||
|                    void *opaque) | ||||
| { | ||||
|     struct daemonAdmClientPrivate *priv; | ||||
|     uid_t clientuid; | ||||
|     gid_t clientgid; | ||||
|     pid_t clientpid; | ||||
|     unsigned long long timestamp; | ||||
|  | ||||
|     if (virNetServerClientGetUNIXIdentity(client, | ||||
|                                           &clientuid, | ||||
|                                           &clientgid, | ||||
|                                           &clientpid, | ||||
|                                           ×tamp) < 0) | ||||
|         return NULL; | ||||
|  | ||||
|     VIR_DEBUG("New client pid %lld uid %lld", | ||||
|               (long long)clientpid, | ||||
|               (long long)clientuid); | ||||
|  | ||||
|     if (geteuid() != clientuid) { | ||||
|         virReportRestrictedError(_("Disallowing client %lld with uid %lld"), | ||||
|                                  (long long)clientpid, | ||||
|                                  (long long)clientuid); | ||||
|         return NULL; | ||||
|     } | ||||
|  | ||||
|     if (VIR_ALLOC(priv) < 0) | ||||
|         return NULL; | ||||
|   | ||||
| @@ -165,7 +165,6 @@ struct _virCPUx86Map { | ||||
| }; | ||||
|  | ||||
| static virCPUx86MapPtr cpuMap; | ||||
| static unsigned int microcodeVersion; | ||||
|  | ||||
| int virCPUx86DriverOnceInit(void); | ||||
| VIR_ONCE_GLOBAL_INIT(virCPUx86Driver); | ||||
| @@ -1332,8 +1331,6 @@ virCPUx86DriverOnceInit(void) | ||||
|     if (!(cpuMap = virCPUx86LoadMap())) | ||||
|         return -1; | ||||
|  | ||||
|     microcodeVersion = virHostCPUGetMicrocodeVersion(); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -2373,7 +2370,7 @@ virCPUx86GetHost(virCPUDefPtr cpu, | ||||
|         goto cleanup; | ||||
|  | ||||
|     ret = x86DecodeCPUData(cpu, cpuData, models); | ||||
|     cpu->microcodeVersion = microcodeVersion; | ||||
|     cpu->microcodeVersion = virHostCPUGetMicrocodeVersion(); | ||||
|  | ||||
|  cleanup: | ||||
|     virCPUx86DataFree(cpuData); | ||||
|   | ||||
| @@ -317,6 +317,9 @@ | ||||
|   <feature name='avx512-4fmaps'> | ||||
|     <cpuid eax_in='0x07' ecx_in='0x00' edx='0x00000008'/> | ||||
|   </feature> | ||||
|   <feature name='md-clear'> <!-- md_clear --> | ||||
|     <cpuid eax_in='0x07' ecx_in='0x00' edx='0x00000400'/> | ||||
|   </feature> | ||||
|   <feature name='pconfig'> | ||||
|     <cpuid eax_in='0x07' ecx_in='0x00' edx='0x00040000'/> | ||||
|   </feature> | ||||
|   | ||||
| @@ -1073,8 +1073,7 @@ virDomainRestoreFlags(virConnectPtr conn, const char *from, const char *dxml, | ||||
|  * previously by virDomainSave() or virDomainSaveFlags(). | ||||
|  * | ||||
|  * No security-sensitive data will be included unless @flags contains | ||||
|  * VIR_DOMAIN_SAVE_IMAGE_XML_SECURE; this flag is rejected on read-only | ||||
|  * connections. | ||||
|  * VIR_DOMAIN_SAVE_IMAGE_XML_SECURE. | ||||
|  * | ||||
|  * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of | ||||
|  * error.  The caller must free() the returned value. | ||||
| @@ -1090,13 +1089,7 @@ virDomainSaveImageGetXMLDesc(virConnectPtr conn, const char *file, | ||||
|  | ||||
|     virCheckConnectReturn(conn, NULL); | ||||
|     virCheckNonNullArgGoto(file, error); | ||||
|  | ||||
|     if ((conn->flags & VIR_CONNECT_RO) && | ||||
|         (flags & VIR_DOMAIN_SAVE_IMAGE_XML_SECURE)) { | ||||
|         virReportError(VIR_ERR_OPERATION_DENIED, "%s", | ||||
|                        _("virDomainSaveImageGetXMLDesc with secure flag")); | ||||
|         goto error; | ||||
|     } | ||||
|     virCheckReadOnlyGoto(conn->flags, error); | ||||
|  | ||||
|     if (conn->driver->domainSaveImageGetXMLDesc) { | ||||
|         char *ret; | ||||
| @@ -9572,6 +9565,7 @@ virDomainManagedSaveDefineXML(virDomainPtr domain, const char *dxml, | ||||
|  | ||||
|     virCheckDomainReturn(domain, -1); | ||||
|     conn = domain->conn; | ||||
|     virCheckReadOnlyGoto(conn->flags, error); | ||||
|  | ||||
|     if (conn->driver->domainManagedSaveDefineXML) { | ||||
|         int ret; | ||||
| @@ -11366,6 +11360,7 @@ virConnectGetDomainCapabilities(virConnectPtr conn, | ||||
|     virResetLastError(); | ||||
|  | ||||
|     virCheckConnectReturn(conn, NULL); | ||||
|     virCheckReadOnlyGoto(conn->flags, error); | ||||
|  | ||||
|     if (conn->driver->connectGetDomainCapabilities) { | ||||
|         char *ret; | ||||
|   | ||||
| @@ -1041,6 +1041,7 @@ virConnectCompareHypervisorCPU(virConnectPtr conn, | ||||
|  | ||||
|     virCheckConnectReturn(conn, VIR_CPU_COMPARE_ERROR); | ||||
|     virCheckNonNullArgGoto(xmlCPU, error); | ||||
|     virCheckReadOnlyGoto(conn->flags, error); | ||||
|  | ||||
|     if (conn->driver->connectCompareHypervisorCPU) { | ||||
|         int ret; | ||||
| @@ -1234,6 +1235,7 @@ virConnectBaselineHypervisorCPU(virConnectPtr conn, | ||||
|  | ||||
|     virCheckConnectReturn(conn, NULL); | ||||
|     virCheckNonNullArgGoto(xmlCPUs, error); | ||||
|     virCheckReadOnlyGoto(conn->flags, error); | ||||
|  | ||||
|     if (conn->driver->connectBaselineHypervisorCPU) { | ||||
|         char *cpu; | ||||
|   | ||||
| @@ -5,6 +5,7 @@ Before=libvirtd.service | ||||
| [Socket] | ||||
| ListenStream=@localstatedir@/run/libvirt/virtlockd-admin-sock | ||||
| Service=virtlockd.service | ||||
| SocketMode=0600 | ||||
|  | ||||
| [Install] | ||||
| WantedBy=sockets.target | ||||
|   | ||||
| @@ -4,6 +4,7 @@ Before=libvirtd.service | ||||
|  | ||||
| [Socket] | ||||
| ListenStream=@localstatedir@/run/libvirt/virtlockd-sock | ||||
| SocketMode=0600 | ||||
|  | ||||
| [Install] | ||||
| WantedBy=sockets.target | ||||
|   | ||||
| @@ -5,6 +5,7 @@ Before=libvirtd.service | ||||
| [Socket] | ||||
| ListenStream=@localstatedir@/run/libvirt/virtlogd-admin-sock | ||||
| Service=virtlogd.service | ||||
| SocketMode=0600 | ||||
|  | ||||
| [Install] | ||||
| WantedBy=sockets.target | ||||
|   | ||||
| @@ -4,6 +4,7 @@ Before=libvirtd.service | ||||
|  | ||||
| [Socket] | ||||
| ListenStream=@localstatedir@/run/libvirt/virtlogd-sock | ||||
| SocketMode=0600 | ||||
|  | ||||
| [Install] | ||||
| WantedBy=sockets.target | ||||
|   | ||||
| @@ -2108,8 +2108,11 @@ static void | ||||
| networkReloadFirewallRules(virNetworkDriverStatePtr driver, bool startup) | ||||
| { | ||||
|     VIR_INFO("Reloading iptables rules"); | ||||
|     if (networkPreReloadFirewallRules(startup) < 0) | ||||
|     /* Ideally we'd not even register the driver when unprivilegd | ||||
|      * but until we untangle the virt driver that's not viable */ | ||||
|     if (!driver->privileged) | ||||
|         return; | ||||
|     networkPreReloadFirewallRules(startup); | ||||
|     virNetworkObjListForEach(driver->networks, | ||||
|                              networkReloadFirewallRulesHelper, | ||||
|                              NULL); | ||||
|   | ||||
| @@ -35,11 +35,37 @@ VIR_LOG_INIT("network.bridge_driver_linux"); | ||||
|  | ||||
| #define PROC_NET_ROUTE "/proc/net/route" | ||||
|  | ||||
| int networkPreReloadFirewallRules(bool startup) | ||||
| static virErrorPtr errInitV4; | ||||
| static virErrorPtr errInitV6; | ||||
|  | ||||
| void networkPreReloadFirewallRules(bool startup) | ||||
| { | ||||
|     int ret = iptablesSetupPrivateChains(); | ||||
|     if (ret < 0) | ||||
|         return -1; | ||||
|     bool created = false; | ||||
|     int rc; | ||||
|  | ||||
|     /* We create global rules upfront as we don't want | ||||
|      * the perf hit of conditionally figuring out whether | ||||
|      * to create them each time a network is started. | ||||
|      * | ||||
|      * Any errors here are saved to be reported at time | ||||
|      * of starting the network though as that makes them | ||||
|      * more likely to be seen by a human | ||||
|      */ | ||||
|     rc = iptablesSetupPrivateChains(VIR_FIREWALL_LAYER_IPV4); | ||||
|     if (rc < 0) { | ||||
|         errInitV4 = virSaveLastError(); | ||||
|         virResetLastError(); | ||||
|     } | ||||
|     if (rc) | ||||
|         created = true; | ||||
|  | ||||
|     rc = iptablesSetupPrivateChains(VIR_FIREWALL_LAYER_IPV6); | ||||
|     if (rc < 0) { | ||||
|         errInitV6 = virSaveLastError(); | ||||
|         virResetLastError(); | ||||
|     } | ||||
|     if (rc) | ||||
|         created = true; | ||||
|  | ||||
|     /* | ||||
|      * If this is initial startup, and we just created the | ||||
| @@ -54,10 +80,8 @@ int networkPreReloadFirewallRules(bool startup) | ||||
|      * rules will be present. Thus we can safely just tell it | ||||
|      * to always delete from the builin chain | ||||
|      */ | ||||
|     if (startup && ret == 1) | ||||
|     if (startup && created) | ||||
|         iptablesSetDeletePrivate(false); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -671,6 +695,21 @@ int networkAddFirewallRules(virNetworkDefPtr def) | ||||
|     virFirewallPtr fw = NULL; | ||||
|     int ret = -1; | ||||
|  | ||||
|     if (errInitV4 && | ||||
|         (virNetworkDefGetIPByIndex(def, AF_INET, 0) || | ||||
|          virNetworkDefGetRouteByIndex(def, AF_INET, 0))) { | ||||
|         virSetError(errInitV4); | ||||
|         return -1; | ||||
|     } | ||||
|  | ||||
|     if (errInitV6 && | ||||
|         (virNetworkDefGetIPByIndex(def, AF_INET6, 0) || | ||||
|          virNetworkDefGetRouteByIndex(def, AF_INET6, 0) || | ||||
|          def->ipv6nogw)) { | ||||
|         virSetError(errInitV6); | ||||
|         return -1; | ||||
|     } | ||||
|  | ||||
|     if (def->bridgeZone) { | ||||
|  | ||||
|         /* if a firewalld zone has been specified, fail/log an error | ||||
|   | ||||
| @@ -19,9 +19,8 @@ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| int networkPreReloadFirewallRules(bool startup ATTRIBUTE_UNUSED) | ||||
| void networkPreReloadFirewallRules(bool startup ATTRIBUTE_UNUSED) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -58,7 +58,7 @@ struct _virNetworkDriverState { | ||||
| typedef struct _virNetworkDriverState virNetworkDriverState; | ||||
| typedef virNetworkDriverState *virNetworkDriverStatePtr; | ||||
|  | ||||
| int networkPreReloadFirewallRules(bool startup); | ||||
| void networkPreReloadFirewallRules(bool startup); | ||||
| void networkPostReloadFirewallRules(bool startup); | ||||
|  | ||||
| int networkCheckRouteCollision(virNetworkDefPtr def); | ||||
|   | ||||
| @@ -4487,7 +4487,7 @@ virQEMUCapsNewData(const char *binary, | ||||
|                                            priv->libDir, | ||||
|                                            priv->runUid, | ||||
|                                            priv->runGid, | ||||
|                                            priv->microcodeVersion, | ||||
|                                            virHostCPUGetMicrocodeVersion(), | ||||
|                                            priv->kernelVersion); | ||||
| } | ||||
|  | ||||
| @@ -4570,8 +4570,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; | ||||
| @@ -4595,7 +4594,6 @@ virQEMUCapsCacheNew(const char *libDir, | ||||
|  | ||||
|     priv->runUid = runUid; | ||||
|     priv->runGid = runGid; | ||||
|     priv->microcodeVersion = microcodeVersion; | ||||
|     priv->kvmUsable = VIR_TRISTATE_BOOL_ABSENT; | ||||
|  | ||||
|     if (uname(&uts) == 0 && | ||||
| @@ -4617,8 +4615,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); | ||||
| @@ -4672,6 +4673,7 @@ virQEMUCapsPtr | ||||
| virQEMUCapsCacheLookupByArch(virFileCachePtr cache, | ||||
|                              virArch arch) | ||||
| { | ||||
|     virQEMUCapsCachePrivPtr priv = virFileCacheGetPriv(cache); | ||||
|     virQEMUCapsPtr ret = NULL; | ||||
|     const char *binaryFilters[] = { | ||||
|         "qemu-system-", | ||||
| @@ -4684,6 +4686,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 = { | ||||
|   | ||||
| @@ -587,8 +587,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, | ||||
|   | ||||
| @@ -585,8 +585,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; | ||||
| @@ -809,15 +807,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; | ||||
|  | ||||
| @@ -7090,7 +7083,7 @@ qemuDomainSaveImageGetXMLDesc(virConnectPtr conn, const char *path, | ||||
|     if (fd < 0) | ||||
|         goto cleanup; | ||||
|  | ||||
|     if (virDomainSaveImageGetXMLDescEnsureACL(conn, def, flags) < 0) | ||||
|     if (virDomainSaveImageGetXMLDescEnsureACL(conn, def) < 0) | ||||
|         goto cleanup; | ||||
|  | ||||
|     ret = qemuDomainDefFormatXML(driver, def, flags); | ||||
|   | ||||
| @@ -5234,8 +5234,7 @@ enum remote_procedure { | ||||
|     /** | ||||
|      * @generate: both | ||||
|      * @priority: high | ||||
|      * @acl: domain:read | ||||
|      * @acl: domain:read_secure:VIR_DOMAIN_SAVE_IMAGE_XML_SECURE | ||||
|      * @acl: domain:write | ||||
|      */ | ||||
|     REMOTE_PROC_DOMAIN_SAVE_IMAGE_GET_XML_DESC = 235, | ||||
|  | ||||
|   | ||||
| @@ -565,19 +565,111 @@ volStorageBackendRBDRefreshVolInfo(virStorageVolDefPtr vol, | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
|  | ||||
| #ifdef HAVE_RBD_LIST2 | ||||
| static char ** | ||||
| virStorageBackendRBDGetVolNames(virStorageBackendRBDStatePtr ptr) | ||||
| { | ||||
|     char **names = NULL; | ||||
|     size_t nnames = 0; | ||||
|     int rc; | ||||
|     rbd_image_spec_t *images = NULL; | ||||
|     size_t nimages = 16; | ||||
|     size_t i; | ||||
|  | ||||
|     while (true) { | ||||
|         if (VIR_ALLOC_N(images, nimages) < 0) | ||||
|             goto error; | ||||
|  | ||||
|         rc = rbd_list2(ptr->ioctx, images, &nimages); | ||||
|         if (rc >= 0) | ||||
|             break; | ||||
|         if (rc != -ERANGE) { | ||||
|             virReportSystemError(-rc, "%s", _("Unable to list RBD images")); | ||||
|             goto error; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (VIR_ALLOC_N(names, nimages + 1) < 0) | ||||
|         goto error; | ||||
|     nnames = nimages; | ||||
|  | ||||
|     for (i = 0; i < nimages; i++) | ||||
|         VIR_STEAL_PTR(names[i], images->name); | ||||
|  | ||||
|     return names; | ||||
|  | ||||
|  error: | ||||
|     virStringListFreeCount(names, nnames); | ||||
|     rbd_image_spec_list_cleanup(images, nimages); | ||||
|     VIR_FREE(images); | ||||
|     return NULL; | ||||
| } | ||||
|  | ||||
| #else /* ! HAVE_RBD_LIST2 */ | ||||
|  | ||||
| static char ** | ||||
| virStorageBackendRBDGetVolNames(virStorageBackendRBDStatePtr ptr) | ||||
| { | ||||
|     char **names = NULL; | ||||
|     size_t nnames = 0; | ||||
|     int rc; | ||||
|     size_t max_size = 1024; | ||||
|     VIR_AUTOFREE(char *) namebuf = NULL; | ||||
|     const char *name; | ||||
|  | ||||
|     while (true) { | ||||
|         if (VIR_ALLOC_N(namebuf, max_size) < 0) | ||||
|             goto error; | ||||
|  | ||||
|         rc = rbd_list(ptr->ioctx, namebuf, &max_size); | ||||
|         if (rc >= 0) | ||||
|             break; | ||||
|         if (rc != -ERANGE) { | ||||
|             virReportSystemError(-rc, "%s", _("Unable to list RBD images")); | ||||
|             goto error; | ||||
|         } | ||||
|         VIR_FREE(namebuf); | ||||
|     } | ||||
|  | ||||
|     for (name = namebuf; name < namebuf + max_size;) { | ||||
|         VIR_AUTOFREE(char *) namedup = NULL; | ||||
|  | ||||
|         if (STREQ(name, "")) | ||||
|             break; | ||||
|  | ||||
|         if (VIR_STRDUP(namedup, name) < 0) | ||||
|             goto error; | ||||
|  | ||||
|         if (VIR_APPEND_ELEMENT(names, nnames, namedup) < 0) | ||||
|             goto error; | ||||
|  | ||||
|         name += strlen(name) + 1; | ||||
|     } | ||||
|  | ||||
|     if (VIR_EXPAND_N(names, nnames, 1) < 0) | ||||
|         goto error; | ||||
|  | ||||
|     return names; | ||||
|  | ||||
|  error: | ||||
|     virStringListFreeCount(names, nnames); | ||||
|     return NULL; | ||||
| } | ||||
| #endif /* ! HAVE_RBD_LIST2 */ | ||||
|  | ||||
|  | ||||
| static int | ||||
| virStorageBackendRBDRefreshPool(virStoragePoolObjPtr pool) | ||||
| { | ||||
|     size_t max_size = 1024; | ||||
|     int ret = -1; | ||||
|     int len = -1; | ||||
|     int r = 0; | ||||
|     char *name; | ||||
|     virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool); | ||||
|     virStorageBackendRBDStatePtr ptr = NULL; | ||||
|     struct rados_cluster_stat_t clusterstat; | ||||
|     struct rados_pool_stat_t poolstat; | ||||
|     VIR_AUTOFREE(char *) names = NULL; | ||||
|     char **names = NULL; | ||||
|     size_t i; | ||||
|  | ||||
|     if (!(ptr = virStorageBackendRBDNewState(pool))) | ||||
|         goto cleanup; | ||||
| @@ -602,33 +694,16 @@ virStorageBackendRBDRefreshPool(virStoragePoolObjPtr pool) | ||||
|               def->source.name, clusterstat.kb, clusterstat.kb_avail, | ||||
|               poolstat.num_bytes); | ||||
|  | ||||
|     while (true) { | ||||
|         if (VIR_ALLOC_N(names, max_size) < 0) | ||||
|             goto cleanup; | ||||
|     if (!(names = virStorageBackendRBDGetVolNames(ptr))) | ||||
|         goto cleanup; | ||||
|  | ||||
|         len = rbd_list(ptr->ioctx, names, &max_size); | ||||
|         if (len >= 0) | ||||
|             break; | ||||
|         if (len != -ERANGE) { | ||||
|             VIR_WARN("%s", "A problem occurred while listing RBD images"); | ||||
|             goto cleanup; | ||||
|         } | ||||
|         VIR_FREE(names); | ||||
|     } | ||||
|  | ||||
|     for (name = names; name < names + max_size;) { | ||||
|     for (i = 0; names[i] != NULL; i++) { | ||||
|         VIR_AUTOPTR(virStorageVolDef) vol = NULL; | ||||
|  | ||||
|         if (STREQ(name, "")) | ||||
|             break; | ||||
|  | ||||
|         if (VIR_ALLOC(vol) < 0) | ||||
|             goto cleanup; | ||||
|  | ||||
|         if (VIR_STRDUP(vol->name, name) < 0) | ||||
|             goto cleanup; | ||||
|  | ||||
|         name += strlen(name) + 1; | ||||
|         VIR_STEAL_PTR(vol->name, names[i]); | ||||
|  | ||||
|         r = volStorageBackendRBDRefreshVolInfo(vol, pool, ptr); | ||||
|  | ||||
| @@ -661,6 +736,7 @@ virStorageBackendRBDRefreshPool(virStoragePoolObjPtr pool) | ||||
|     ret = 0; | ||||
|  | ||||
|  cleanup: | ||||
|     virStringListFree(names); | ||||
|     virStorageBackendRBDFreeState(&ptr); | ||||
|     return ret; | ||||
| } | ||||
|   | ||||
| @@ -127,7 +127,7 @@ iptablesPrivateChainCreate(virFirewallPtr fw, | ||||
|  | ||||
|  | ||||
| int | ||||
| iptablesSetupPrivateChains(void) | ||||
| iptablesSetupPrivateChains(virFirewallLayer layer) | ||||
| { | ||||
|     virFirewallPtr fw = NULL; | ||||
|     int ret = -1; | ||||
| @@ -143,17 +143,11 @@ iptablesSetupPrivateChains(void) | ||||
|     }; | ||||
|     bool changed = false; | ||||
|     iptablesGlobalChainData data[] = { | ||||
|         { VIR_FIREWALL_LAYER_IPV4, "filter", | ||||
|         { layer, "filter", | ||||
|           filter_chains, ARRAY_CARDINALITY(filter_chains), &changed }, | ||||
|         { VIR_FIREWALL_LAYER_IPV4, "nat", | ||||
|         { layer, "nat", | ||||
|           natmangle_chains, ARRAY_CARDINALITY(natmangle_chains), &changed }, | ||||
|         { VIR_FIREWALL_LAYER_IPV4, "mangle", | ||||
|           natmangle_chains, ARRAY_CARDINALITY(natmangle_chains), &changed }, | ||||
|         { VIR_FIREWALL_LAYER_IPV6, "filter", | ||||
|           filter_chains, ARRAY_CARDINALITY(filter_chains), &changed }, | ||||
|         { VIR_FIREWALL_LAYER_IPV6, "nat", | ||||
|           natmangle_chains, ARRAY_CARDINALITY(natmangle_chains), &changed }, | ||||
|         { VIR_FIREWALL_LAYER_IPV6, "mangle", | ||||
|         { layer, "mangle", | ||||
|           natmangle_chains, ARRAY_CARDINALITY(natmangle_chains), &changed }, | ||||
|     }; | ||||
|     size_t i; | ||||
|   | ||||
| @@ -24,7 +24,7 @@ | ||||
| # include "virsocketaddr.h" | ||||
| # include "virfirewall.h" | ||||
|  | ||||
| int              iptablesSetupPrivateChains      (void); | ||||
| int              iptablesSetupPrivateChains      (virFirewallLayer layer); | ||||
|  | ||||
| void             iptablesSetDeletePrivate        (bool pvt); | ||||
|  | ||||
|   | ||||
| @@ -1184,6 +1184,7 @@ mymain(void) | ||||
|     DO_TEST_CPUID(VIR_ARCH_X86_64, "Phenom-B95", JSON_HOST); | ||||
|     DO_TEST_CPUID(VIR_ARCH_X86_64, "Ryzen-7-1800X-Eight-Core", JSON_HOST); | ||||
|     DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-5110", JSON_NONE); | ||||
|     DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-E3-1225-v5", JSON_MODELS); | ||||
|     DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-E3-1245-v5", JSON_MODELS); | ||||
|     DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-E5-2609-v3", JSON_MODELS); | ||||
|     DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-E5-2623-v4", JSON_MODELS); | ||||
|   | ||||
| @@ -0,0 +1,7 @@ | ||||
| <!-- Features disabled by QEMU --> | ||||
| <cpudata arch='x86'> | ||||
|   <cpuid eax_in='0x00000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x0800c1fc' edx='0xb0600000'/> | ||||
|   <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x02000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000d' ecx_in='0x01' eax='0x00000008' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x80000007' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000100'/> | ||||
| </cpudata> | ||||
| @@ -0,0 +1,8 @@ | ||||
| <!-- Features enabled by QEMU --> | ||||
| <cpudata arch='x86'> | ||||
|   <cpuid eax_in='0x00000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0xf7fa3203' edx='0x0f8bfbff'/> | ||||
|   <cpuid eax_in='0x00000006' ecx_in='0x00' eax='0x00000004' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x009c4fbb' ecx='0x00000000' edx='0x8c000400'/> | ||||
|   <cpuid eax_in='0x0000000d' ecx_in='0x01' eax='0x00000007' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000121' edx='0x2c100800'/> | ||||
| </cpudata> | ||||
							
								
								
									
										29
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| <cpu mode='custom' match='exact'> | ||||
|   <model fallback='forbid'>Skylake-Client-IBRS</model> | ||||
|   <vendor>Intel</vendor> | ||||
|   <feature policy='require' name='ds'/> | ||||
|   <feature policy='require' name='acpi'/> | ||||
|   <feature policy='require' name='ss'/> | ||||
|   <feature policy='require' name='ht'/> | ||||
|   <feature policy='require' name='tm'/> | ||||
|   <feature policy='require' name='pbe'/> | ||||
|   <feature policy='require' name='dtes64'/> | ||||
|   <feature policy='require' name='monitor'/> | ||||
|   <feature policy='require' name='ds_cpl'/> | ||||
|   <feature policy='require' name='vmx'/> | ||||
|   <feature policy='require' name='smx'/> | ||||
|   <feature policy='require' name='est'/> | ||||
|   <feature policy='require' name='tm2'/> | ||||
|   <feature policy='require' name='xtpr'/> | ||||
|   <feature policy='require' name='pdcm'/> | ||||
|   <feature policy='require' name='osxsave'/> | ||||
|   <feature policy='require' name='tsc_adjust'/> | ||||
|   <feature policy='require' name='clflushopt'/> | ||||
|   <feature policy='require' name='intel-pt'/> | ||||
|   <feature policy='require' name='md-clear'/> | ||||
|   <feature policy='require' name='stibp'/> | ||||
|   <feature policy='require' name='ssbd'/> | ||||
|   <feature policy='require' name='xsaves'/> | ||||
|   <feature policy='require' name='pdpe1gb'/> | ||||
|   <feature policy='require' name='invtsc'/> | ||||
| </cpu> | ||||
							
								
								
									
										30
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| <cpu> | ||||
|   <arch>x86_64</arch> | ||||
|   <model>Skylake-Client-IBRS</model> | ||||
|   <vendor>Intel</vendor> | ||||
|   <feature name='ds'/> | ||||
|   <feature name='acpi'/> | ||||
|   <feature name='ss'/> | ||||
|   <feature name='ht'/> | ||||
|   <feature name='tm'/> | ||||
|   <feature name='pbe'/> | ||||
|   <feature name='dtes64'/> | ||||
|   <feature name='monitor'/> | ||||
|   <feature name='ds_cpl'/> | ||||
|   <feature name='vmx'/> | ||||
|   <feature name='smx'/> | ||||
|   <feature name='est'/> | ||||
|   <feature name='tm2'/> | ||||
|   <feature name='xtpr'/> | ||||
|   <feature name='pdcm'/> | ||||
|   <feature name='osxsave'/> | ||||
|   <feature name='tsc_adjust'/> | ||||
|   <feature name='clflushopt'/> | ||||
|   <feature name='intel-pt'/> | ||||
|   <feature name='md-clear'/> | ||||
|   <feature name='stibp'/> | ||||
|   <feature name='ssbd'/> | ||||
|   <feature name='xsaves'/> | ||||
|   <feature name='pdpe1gb'/> | ||||
|   <feature name='invtsc'/> | ||||
| </cpu> | ||||
							
								
								
									
										12
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| <cpu mode='custom' match='exact'> | ||||
|   <model fallback='forbid'>Skylake-Client-IBRS</model> | ||||
|   <vendor>Intel</vendor> | ||||
|   <feature policy='require' name='ss'/> | ||||
|   <feature policy='require' name='hypervisor'/> | ||||
|   <feature policy='require' name='tsc_adjust'/> | ||||
|   <feature policy='require' name='clflushopt'/> | ||||
|   <feature policy='require' name='md-clear'/> | ||||
|   <feature policy='require' name='stibp'/> | ||||
|   <feature policy='require' name='ssbd'/> | ||||
|   <feature policy='require' name='pdpe1gb'/> | ||||
| </cpu> | ||||
							
								
								
									
										652
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										652
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,652 @@ | ||||
| { | ||||
|   "return": { | ||||
|     "model": { | ||||
|       "name": "base", | ||||
|       "props": { | ||||
|         "phys-bits": 0, | ||||
|         "core-id": -1, | ||||
|         "xlevel": 2147483656, | ||||
|         "cmov": true, | ||||
|         "ia64": false, | ||||
|         "aes": true, | ||||
|         "mmx": true, | ||||
|         "rdpid": false, | ||||
|         "arat": true, | ||||
|         "gfni": false, | ||||
|         "pause-filter": false, | ||||
|         "xsavec": true, | ||||
|         "intel-pt": false, | ||||
|         "osxsave": false, | ||||
|         "hv-frequencies": false, | ||||
|         "tsc-frequency": 0, | ||||
|         "xd": true, | ||||
|         "hv-vendor-id": "", | ||||
|         "kvm-asyncpf": true, | ||||
|         "kvm_asyncpf": true, | ||||
|         "perfctr_core": false, | ||||
|         "perfctr-core": false, | ||||
|         "mpx": true, | ||||
|         "pbe": false, | ||||
|         "decodeassists": false, | ||||
|         "avx512cd": false, | ||||
|         "sse4_1": true, | ||||
|         "sse4.1": true, | ||||
|         "sse4-1": true, | ||||
|         "family": 6, | ||||
|         "legacy-cache": true, | ||||
|         "vmware-cpuid-freq": true, | ||||
|         "avx512f": false, | ||||
|         "msr": true, | ||||
|         "mce": true, | ||||
|         "mca": true, | ||||
|         "hv-runtime": false, | ||||
|         "xcrypt": false, | ||||
|         "thread-id": -1, | ||||
|         "min-level": 13, | ||||
|         "xgetbv1": true, | ||||
|         "cid": false, | ||||
|         "hv-relaxed": false, | ||||
|         "hv-crash": false, | ||||
|         "ds": false, | ||||
|         "fxsr": true, | ||||
|         "xsaveopt": true, | ||||
|         "xtpr": false, | ||||
|         "avx512vl": false, | ||||
|         "avx512-vpopcntdq": false, | ||||
|         "phe": false, | ||||
|         "extapic": false, | ||||
|         "3dnowprefetch": true, | ||||
|         "avx512vbmi2": false, | ||||
|         "cr8legacy": false, | ||||
|         "stibp": true, | ||||
|         "cpuid-0xb": true, | ||||
|         "xcrypt-en": false, | ||||
|         "kvm_pv_eoi": true, | ||||
|         "apic-id": 4294967295, | ||||
|         "pn": false, | ||||
|         "dca": false, | ||||
|         "vendor": "GenuineIntel", | ||||
|         "pku": false, | ||||
|         "smx": false, | ||||
|         "cmp_legacy": false, | ||||
|         "cmp-legacy": false, | ||||
|         "node-id": -1, | ||||
|         "avx512-4fmaps": false, | ||||
|         "vmcb_clean": false, | ||||
|         "vmcb-clean": false, | ||||
|         "3dnowext": false, | ||||
|         "hle": true, | ||||
|         "npt": false, | ||||
|         "memory": "/machine/unattached/system[0]", | ||||
|         "clwb": false, | ||||
|         "lbrv": false, | ||||
|         "adx": true, | ||||
|         "ss": true, | ||||
|         "pni": true, | ||||
|         "svm_lock": false, | ||||
|         "svm-lock": false, | ||||
|         "pfthreshold": false, | ||||
|         "smep": true, | ||||
|         "smap": true, | ||||
|         "x2apic": true, | ||||
|         "avx512vbmi": false, | ||||
|         "avx512vnni": false, | ||||
|         "hv-stimer": false, | ||||
|         "i64": true, | ||||
|         "flushbyasid": false, | ||||
|         "f16c": true, | ||||
|         "ace2-en": false, | ||||
|         "pat": true, | ||||
|         "pae": true, | ||||
|         "sse": true, | ||||
|         "phe-en": false, | ||||
|         "kvm_nopiodelay": true, | ||||
|         "kvm-nopiodelay": true, | ||||
|         "tm": false, | ||||
|         "kvmclock-stable-bit": true, | ||||
|         "hypervisor": true, | ||||
|         "socket-id": -1, | ||||
|         "pcommit": false, | ||||
|         "syscall": true, | ||||
|         "level": 13, | ||||
|         "avx512dq": false, | ||||
|         "svm": false, | ||||
|         "full-cpuid-auto-level": true, | ||||
|         "hv-reset": false, | ||||
|         "invtsc": false, | ||||
|         "sse3": true, | ||||
|         "sse2": true, | ||||
|         "ssbd": true, | ||||
|         "est": false, | ||||
|         "avx512ifma": false, | ||||
|         "tm2": false, | ||||
|         "kvm-pv-eoi": true, | ||||
|         "cx8": true, | ||||
|         "kvm_mmu": false, | ||||
|         "kvm-mmu": false, | ||||
|         "sse4_2": true, | ||||
|         "sse4.2": true, | ||||
|         "sse4-2": true, | ||||
|         "pge": true, | ||||
|         "fill-mtrr-mask": true, | ||||
|         "avx512bitalg": false, | ||||
|         "nodeid_msr": false, | ||||
|         "pdcm": false, | ||||
|         "movbe": true, | ||||
|         "model": 94, | ||||
|         "nrip_save": false, | ||||
|         "nrip-save": false, | ||||
|         "kvm_pv_unhalt": true, | ||||
|         "ssse3": true, | ||||
|         "sse4a": false, | ||||
|         "invpcid": true, | ||||
|         "pdpe1gb": true, | ||||
|         "tsc-deadline": true, | ||||
|         "fma": true, | ||||
|         "cx16": true, | ||||
|         "de": true, | ||||
|         "enforce": false, | ||||
|         "stepping": 3, | ||||
|         "xsave": true, | ||||
|         "clflush": true, | ||||
|         "skinit": false, | ||||
|         "tsc": true, | ||||
|         "tce": false, | ||||
|         "fpu": true, | ||||
|         "ibs": false, | ||||
|         "ds_cpl": false, | ||||
|         "ds-cpl": false, | ||||
|         "host-phys-bits": true, | ||||
|         "fma4": false, | ||||
|         "la57": false, | ||||
|         "osvw": false, | ||||
|         "check": true, | ||||
|         "hv-spinlocks": -1, | ||||
|         "pmu": false, | ||||
|         "pmm": false, | ||||
|         "apic": true, | ||||
|         "spec-ctrl": true, | ||||
|         "min-xlevel2": 0, | ||||
|         "tsc-adjust": true, | ||||
|         "tsc_adjust": true, | ||||
|         "kvm-steal-time": true, | ||||
|         "kvm_steal_time": true, | ||||
|         "kvmclock": true, | ||||
|         "l3-cache": true, | ||||
|         "lwp": false, | ||||
|         "ibpb": false, | ||||
|         "xop": false, | ||||
|         "avx": true, | ||||
|         "ospke": false, | ||||
|         "ace2": false, | ||||
|         "avx512bw": false, | ||||
|         "acpi": false, | ||||
|         "hv-vapic": false, | ||||
|         "fsgsbase": true, | ||||
|         "ht": false, | ||||
|         "nx": true, | ||||
|         "pclmulqdq": true, | ||||
|         "mmxext": false, | ||||
|         "vaes": false, | ||||
|         "popcnt": true, | ||||
|         "xsaves": false, | ||||
|         "tcg-cpuid": true, | ||||
|         "lm": true, | ||||
|         "umip": false, | ||||
|         "pse": true, | ||||
|         "avx2": true, | ||||
|         "sep": true, | ||||
|         "pclmuldq": true, | ||||
|         "virt-ssbd": false, | ||||
|         "x-hv-max-vps": -1, | ||||
|         "nodeid-msr": false, | ||||
|         "md-clear": true, | ||||
|         "kvm": true, | ||||
|         "misalignsse": false, | ||||
|         "min-xlevel": 2147483656, | ||||
|         "kvm-pv-unhalt": true, | ||||
|         "bmi2": true, | ||||
|         "bmi1": true, | ||||
|         "realized": false, | ||||
|         "tsc_scale": false, | ||||
|         "tsc-scale": false, | ||||
|         "topoext": false, | ||||
|         "hv-vpindex": false, | ||||
|         "xlevel2": 0, | ||||
|         "clflushopt": true, | ||||
|         "kvm-no-smi-migration": false, | ||||
|         "monitor": false, | ||||
|         "avx512er": false, | ||||
|         "pmm-en": false, | ||||
|         "pcid": true, | ||||
|         "3dnow": false, | ||||
|         "erms": true, | ||||
|         "lahf-lm": true, | ||||
|         "lahf_lm": true, | ||||
|         "vpclmulqdq": false, | ||||
|         "fxsr-opt": false, | ||||
|         "hv-synic": false, | ||||
|         "xstore": false, | ||||
|         "fxsr_opt": false, | ||||
|         "kvm-hint-dedicated": false, | ||||
|         "rtm": true, | ||||
|         "lmce": true, | ||||
|         "hv-time": false, | ||||
|         "perfctr-nb": false, | ||||
|         "perfctr_nb": false, | ||||
|         "ffxsr": false, | ||||
|         "rdrand": true, | ||||
|         "rdseed": true, | ||||
|         "avx512-4vnniw": false, | ||||
|         "vmx": false, | ||||
|         "vme": true, | ||||
|         "dtes64": false, | ||||
|         "mtrr": true, | ||||
|         "rdtscp": true, | ||||
|         "pse36": true, | ||||
|         "kvm-pv-tlb-flush": false, | ||||
|         "tbm": false, | ||||
|         "wdt": false, | ||||
|         "pause_filter": false, | ||||
|         "sha-ni": false, | ||||
|         "model-id": "Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz", | ||||
|         "abm": true, | ||||
|         "avx512pf": false, | ||||
|         "xstore-en": false | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "id": "model-expansion" | ||||
| } | ||||
|  | ||||
| { | ||||
|   "return": [ | ||||
|     { | ||||
|       "name": "max", | ||||
|       "typename": "max-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": false | ||||
|     }, | ||||
|     { | ||||
|       "name": "host", | ||||
|       "typename": "host-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": false | ||||
|     }, | ||||
|     { | ||||
|       "name": "base", | ||||
|       "typename": "base-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": true, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "qemu64", | ||||
|       "typename": "qemu64-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "qemu32", | ||||
|       "typename": "qemu32-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "phenom", | ||||
|       "typename": "phenom-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "mmxext", | ||||
|         "fxsr-opt", | ||||
|         "3dnowext", | ||||
|         "3dnow", | ||||
|         "sse4a", | ||||
|         "npt" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "pentium3", | ||||
|       "typename": "pentium3-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "pentium2", | ||||
|       "typename": "pentium2-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "pentium", | ||||
|       "typename": "pentium-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "n270", | ||||
|       "typename": "n270-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "kvm64", | ||||
|       "typename": "kvm64-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "kvm32", | ||||
|       "typename": "kvm32-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "cpu64-rhel6", | ||||
|       "typename": "cpu64-rhel6-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "sse4a" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "coreduo", | ||||
|       "typename": "coreduo-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "core2duo", | ||||
|       "typename": "core2duo-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "athlon", | ||||
|       "typename": "athlon-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "mmxext", | ||||
|         "3dnowext", | ||||
|         "3dnow" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Westmere", | ||||
|       "typename": "Westmere-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Westmere-IBRS", | ||||
|       "typename": "Westmere-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Skylake-Server", | ||||
|       "typename": "Skylake-Server-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "avx512f", | ||||
|         "avx512dq", | ||||
|         "clwb", | ||||
|         "avx512cd", | ||||
|         "avx512bw", | ||||
|         "avx512vl", | ||||
|         "avx512f", | ||||
|         "avx512f", | ||||
|         "avx512f" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Skylake-Server-IBRS", | ||||
|       "typename": "Skylake-Server-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "avx512f", | ||||
|         "avx512dq", | ||||
|         "clwb", | ||||
|         "avx512cd", | ||||
|         "avx512bw", | ||||
|         "avx512vl", | ||||
|         "avx512f", | ||||
|         "avx512f", | ||||
|         "avx512f" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Skylake-Client", | ||||
|       "typename": "Skylake-Client-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Skylake-Client-IBRS", | ||||
|       "typename": "Skylake-Client-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "SandyBridge", | ||||
|       "typename": "SandyBridge-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "SandyBridge-IBRS", | ||||
|       "typename": "SandyBridge-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Penryn", | ||||
|       "typename": "Penryn-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Opteron_G5", | ||||
|       "typename": "Opteron_G5-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "sse4a", | ||||
|         "misalignsse", | ||||
|         "xop", | ||||
|         "fma4", | ||||
|         "tbm" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Opteron_G4", | ||||
|       "typename": "Opteron_G4-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "sse4a", | ||||
|         "misalignsse", | ||||
|         "xop", | ||||
|         "fma4" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Opteron_G3", | ||||
|       "typename": "Opteron_G3-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "sse4a", | ||||
|         "misalignsse" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Opteron_G2", | ||||
|       "typename": "Opteron_G2-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Opteron_G1", | ||||
|       "typename": "Opteron_G1-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Nehalem", | ||||
|       "typename": "Nehalem-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Nehalem-IBRS", | ||||
|       "typename": "Nehalem-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "IvyBridge", | ||||
|       "typename": "IvyBridge-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "IvyBridge-IBRS", | ||||
|       "typename": "IvyBridge-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Haswell", | ||||
|       "typename": "Haswell-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Haswell-noTSX", | ||||
|       "typename": "Haswell-noTSX-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Haswell-noTSX-IBRS", | ||||
|       "typename": "Haswell-noTSX-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Haswell-IBRS", | ||||
|       "typename": "Haswell-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "EPYC", | ||||
|       "typename": "EPYC-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "sha-ni", | ||||
|         "mmxext", | ||||
|         "fxsr-opt", | ||||
|         "cr8legacy", | ||||
|         "sse4a", | ||||
|         "misalignsse", | ||||
|         "osvw" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "EPYC-IBPB", | ||||
|       "typename": "EPYC-IBPB-x86_64-cpu", | ||||
|       "unavailable-features": [ | ||||
|         "sha-ni", | ||||
|         "mmxext", | ||||
|         "fxsr-opt", | ||||
|         "cr8legacy", | ||||
|         "sse4a", | ||||
|         "misalignsse", | ||||
|         "osvw", | ||||
|         "ibpb" | ||||
|       ], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Conroe", | ||||
|       "typename": "Conroe-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Broadwell", | ||||
|       "typename": "Broadwell-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Broadwell-noTSX", | ||||
|       "typename": "Broadwell-noTSX-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Broadwell-noTSX-IBRS", | ||||
|       "typename": "Broadwell-noTSX-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "Broadwell-IBRS", | ||||
|       "typename": "Broadwell-IBRS-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     }, | ||||
|     { | ||||
|       "name": "486", | ||||
|       "typename": "486-x86_64-cpu", | ||||
|       "unavailable-features": [], | ||||
|       "static": false, | ||||
|       "migration-safe": true | ||||
|     } | ||||
|   ], | ||||
|   "id": "definitions" | ||||
| } | ||||
							
								
								
									
										4
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5.sig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5.sig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| 0506e3 | ||||
| family:     6 (0x06) | ||||
| model:     94 (0x5e) | ||||
| stepping:   3 (0x03) | ||||
							
								
								
									
										47
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| <!-- Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz --> | ||||
| <cpudata arch='x86'> | ||||
|   <cpuid eax_in='0x00000000' ecx_in='0x00' eax='0x00000016' ebx='0x756e6547' ecx='0x6c65746e' edx='0x49656e69'/> | ||||
|   <cpuid eax_in='0x00000001' ecx_in='0x00' eax='0x000506e3' ebx='0x06100800' ecx='0x7ffafbff' edx='0xbfebfbff'/> | ||||
|   <cpuid eax_in='0x00000002' ecx_in='0x00' eax='0x76036301' ebx='0x00f0b6ff' ecx='0x00000000' edx='0x00c30000'/> | ||||
|   <cpuid eax_in='0x00000003' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000004' ecx_in='0x00' eax='0x1c004121' ebx='0x01c0003f' ecx='0x0000003f' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000004' ecx_in='0x01' eax='0x1c004122' ebx='0x01c0003f' ecx='0x0000003f' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000004' ecx_in='0x02' eax='0x1c004143' ebx='0x00c0003f' ecx='0x000003ff' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000004' ecx_in='0x03' eax='0x1c03c163' ebx='0x03c0003f' ecx='0x00001fff' edx='0x00000006'/> | ||||
|   <cpuid eax_in='0x00000005' ecx_in='0x00' eax='0x00000040' ebx='0x00000040' ecx='0x00000003' edx='0x00142120'/> | ||||
|   <cpuid eax_in='0x00000006' ecx_in='0x00' eax='0x000027f7' ebx='0x00000002' ecx='0x00000009' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x029c6fbf' ecx='0x00000000' edx='0x9c002400'/> | ||||
|   <cpuid eax_in='0x00000008' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000009' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000a' ecx_in='0x00' eax='0x07300804' ebx='0x00000000' ecx='0x00000000' edx='0x00000603'/> | ||||
|   <cpuid eax_in='0x0000000b' ecx_in='0x00' eax='0x00000001' ebx='0x00000001' ecx='0x00000100' edx='0x00000006'/> | ||||
|   <cpuid eax_in='0x0000000b' ecx_in='0x01' eax='0x00000004' ebx='0x00000004' ecx='0x00000201' edx='0x00000006'/> | ||||
|   <cpuid eax_in='0x0000000c' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000d' ecx_in='0x00' eax='0x0000001f' ebx='0x00000440' ecx='0x00000440' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000d' ecx_in='0x01' eax='0x0000000f' ebx='0x000003c0' ecx='0x00000100' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000d' ecx_in='0x02' eax='0x00000100' ebx='0x00000240' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000d' ecx_in='0x03' eax='0x00000040' ebx='0x000003c0' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000d' ecx_in='0x04' eax='0x00000040' ebx='0x00000400' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000d' ecx_in='0x08' eax='0x00000080' ebx='0x00000000' ecx='0x00000001' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000e' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x0000000f' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000010' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000011' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000012' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000013' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000014' ecx_in='0x00' eax='0x00000001' ebx='0x0000000f' ecx='0x00000007' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000014' ecx_in='0x01' eax='0x02490002' ebx='0x003f3fff' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000015' ecx_in='0x00' eax='0x00000002' ebx='0x00000114' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x00000016' ecx_in='0x00' eax='0x00000ce4' ebx='0x00000e74' ecx='0x00000064' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x80000000' ecx_in='0x00' eax='0x80000008' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000121' edx='0x2c100800'/> | ||||
|   <cpuid eax_in='0x80000002' ecx_in='0x00' eax='0x65746e49' ebx='0x2952286c' ecx='0x6f655820' edx='0x2952286e'/> | ||||
|   <cpuid eax_in='0x80000003' ecx_in='0x00' eax='0x55504320' ebx='0x2d334520' ecx='0x35323231' edx='0x20357620'/> | ||||
|   <cpuid eax_in='0x80000004' ecx_in='0x00' eax='0x2e332040' ebx='0x48473033' ecx='0x0000007a' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x80000005' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x80000006' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x01006040' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x80000007' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000100'/> | ||||
|   <cpuid eax_in='0x80000008' ecx_in='0x00' eax='0x00003027' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0x80860000' ecx_in='0x00' eax='0x00000ce4' ebx='0x00000e74' ecx='0x00000064' edx='0x00000000'/> | ||||
|   <cpuid eax_in='0xc0000000' ecx_in='0x00' eax='0x00000ce4' ebx='0x00000e74' ecx='0x00000064' edx='0x00000000'/> | ||||
| </cpudata> | ||||
| @@ -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; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user