]> xenbits.xensource.com Git - libvirt.git/commitdiff
Taint domains configured with cpu mode=host-passthrough
authorJiri Denemark <jdenemar@redhat.com>
Thu, 18 Aug 2011 10:56:56 +0000 (12:56 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Tue, 17 Jan 2012 10:49:42 +0000 (11:49 +0100)
There are several reasons for doing this:

- the CPU specification is out of libvirt's control so we cannot
  guarantee stable guest ABI
- not every feature of a CPU may actually work as expected when
  advertised directly to a guest
- migration between two machines with exactly the same CPU may work but
  no guarantees can be made
- this mode is not supported and its use is at one's own risk

src/conf/domain_conf.c
src/conf/domain_conf.h
src/qemu/qemu_domain.c

index dcc32465ac9e8d5e4dd886004286524ee579ed55..8f6eea7946f367da54d4d1ac31e670777ce10368 100644 (file)
@@ -75,7 +75,8 @@ VIR_ENUM_IMPL(virDomainTaint, VIR_DOMAIN_TAINT_LAST,
               "high-privileges",
               "shell-scripts",
               "disk-probing",
-              "external-launch");
+              "external-launch",
+              "host-cpu");
 
 VIR_ENUM_IMPL(virDomainVirt, VIR_DOMAIN_VIRT_LAST,
               "qemu",
index 7c7e93b1022e67648bb291d3eac92109ecea338a..f3c45be07c14372dd477b391e9b9f425bdbf5381 100644 (file)
@@ -1524,6 +1524,7 @@ enum virDomainTaintFlags {
     VIR_DOMAIN_TAINT_SHELL_SCRIPTS,    /* Network configuration using opaque shell scripts */
     VIR_DOMAIN_TAINT_DISK_PROBING,     /* Relying on potentially unsafe disk format probing */
     VIR_DOMAIN_TAINT_EXTERNAL_LAUNCH,  /* Externally launched guest domain */
+    VIR_DOMAIN_TAINT_HOST_CPU,         /* Host CPU passthrough in use */
 
     VIR_DOMAIN_TAINT_LAST
 };
index a25f4df591e4664a1e1dec3d8cc784e87a28767a..cfe0ece449ff3233e5fe3e729bcb3d55deac52f9 100644 (file)
@@ -1143,6 +1143,9 @@ void qemuDomainObjCheckTaint(struct qemud_driver *driver,
             qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CUSTOM_ARGV, logFD);
     }
 
+    if (obj->def->cpu && obj->def->cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH)
+        qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HOST_CPU, logFD);
+
     for (i = 0 ; i < obj->def->ndisks ; i++)
         qemuDomainObjCheckDiskTaint(driver, obj, obj->def->disks[i], logFD);