[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH v2 5/6] Taint domains configured with cpu mode=host-passthrough



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 it's use is at one's own risk
---
Notes:
    Version 2:
    - more verbose commit message

 src/conf/domain_conf.c |    3 ++-
 src/conf/domain_conf.h |    1 +
 src/qemu/qemu_domain.c |    3 +++
 3 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 173351b..982a7de 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -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",
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 3d5d4f8..606af17 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1513,6 +1513,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
 };
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index a25f4df..cfe0ece 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -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);
 
-- 
1.7.8.3


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]