From 9c2afd17fd6b0dd500261cd9f8a9eff2a69af690 Mon Sep 17 00:00:00 2001 From: Tim Wiederhake Date: Thu, 25 Nov 2021 19:57:49 +0100 Subject: [PATCH] conf: domain: Add hyperv passthrough mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tim Wiederhake Reviewed-by: Ján Tomko --- src/conf/domain_conf.c | 1 + src/conf/domain_conf.h | 1 + src/qemu/qemu_command.c | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 0ae28a0a7c..9a21ac10ce 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -141,6 +141,7 @@ VIR_ENUM_IMPL(virDomainHyperVMode, VIR_DOMAIN_HYPERV_MODE_LAST, "none", "custom", + "passthrough", ); VIR_ENUM_IMPL(virDomainBoot, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index bfbe5a2f6b..afabcd1b4d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -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; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index ec6bb83bda..6d00105b24 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -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: