]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: domain: Add hyperv passthrough mode
authorTim Wiederhake <twiederh@redhat.com>
Thu, 25 Nov 2021 18:57:49 +0000 (19:57 +0100)
committerTim Wiederhake <twiederh@redhat.com>
Tue, 14 Dec 2021 15:50:45 +0000 (16:50 +0100)
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/qemu/qemu_command.c

index 0ae28a0a7c9fffa33da0ba8b88ffdf0554eab1a3..9a21ac10ceb02c4f457a6fd40055cbc65d009138 100644 (file)
@@ -141,6 +141,7 @@ VIR_ENUM_IMPL(virDomainHyperVMode,
               VIR_DOMAIN_HYPERV_MODE_LAST,
               "none",
               "custom",
+              "passthrough",
 );
 
 VIR_ENUM_IMPL(virDomainBoot,
index bfbe5a2f6b74a7d1e0c9ac39892160223a7f4194..afabcd1b4d3003d9dc5eca8960a8dd42147f40d0 100644 (file)
@@ -158,6 +158,7 @@ VIR_ENUM_DECL(virDomainOS);
 typedef enum {
     VIR_DOMAIN_HYPERV_MODE_NONE = 0,
     VIR_DOMAIN_HYPERV_MODE_CUSTOM,
+    VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH,
 
     VIR_DOMAIN_HYPERV_MODE_LAST
 } virDomainHyperVMode;
index ec6bb83bda4f814f9f09b108bc51a5779b734f09..6d00105b246088a1783d222042fc3abc689339ec 100644 (file)
@@ -6713,6 +6713,22 @@ qemuBuildCpuCommandLine(virCommand *cmd,
     }
 
     if (def->features[VIR_DOMAIN_FEATURE_HYPERV] != VIR_DOMAIN_HYPERV_MODE_NONE) {
+        switch ((virDomainHyperVMode) def->features[VIR_DOMAIN_FEATURE_HYPERV]) {
+        case VIR_DOMAIN_HYPERV_MODE_CUSTOM:
+            break;
+
+        case VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH:
+            virBufferAsprintf(&buf, ",hv-%s=on", "passthrough");
+            break;
+
+        case VIR_DOMAIN_HYPERV_MODE_NONE:
+        case VIR_DOMAIN_HYPERV_MODE_LAST:
+        default:
+            virReportEnumRangeError(virDomainHyperVMode,
+                                    def->features[VIR_DOMAIN_FEATURE_HYPERV]);
+            return -1;
+        }
+
         for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) {
             switch ((virDomainHyperv) i) {
             case VIR_DOMAIN_HYPERV_RELAXED: