mirror of
				https://gitlab.com/libvirt/libvirt.git
				synced 2025-11-03 08:24:18 +03:00 
			
		
		
		
	Compare commits
	
		
			16 Commits
		
	
	
		
			v11.2.0
			...
			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