diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 32ea6d2c68..1a5afbfa41 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -17428,7 +17428,14 @@ static int virDomainFeaturesHyperVDefParse(virDomainDef *def, xmlNodePtr node) { - def->features[VIR_DOMAIN_FEATURE_HYPERV] = VIR_TRISTATE_SWITCH_ON; + virDomainHyperVMode mode; + + if (virXMLPropEnumDefault(node, "mode", virDomainHyperVModeTypeFromString, + VIR_XML_PROP_NONZERO, &mode, + VIR_DOMAIN_HYPERV_MODE_CUSTOM) < 0) + return -1; + + def->features[VIR_DOMAIN_FEATURE_HYPERV] = mode; node = xmlFirstElementChild(node); while (node != NULL) { @@ -21726,7 +21733,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDef *src, } /* hyperv */ - if (src->features[VIR_DOMAIN_FEATURE_HYPERV] == VIR_TRISTATE_SWITCH_ON) { + if (src->features[VIR_DOMAIN_FEATURE_HYPERV] != VIR_DOMAIN_HYPERV_MODE_NONE) { for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { switch ((virDomainHyperv) i) { case VIR_DOMAIN_HYPERV_RELAXED: diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 8199a11b74..ec6bb83bda 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6712,7 +6712,7 @@ qemuBuildCpuCommandLine(virCommand *cmd, VIR_TRISTATE_SWITCH_ON ? "on" : "off"); } - if (def->features[VIR_DOMAIN_FEATURE_HYPERV] == VIR_TRISTATE_SWITCH_ON) { + if (def->features[VIR_DOMAIN_FEATURE_HYPERV] != VIR_DOMAIN_HYPERV_MODE_NONE) { for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { switch ((virDomainHyperv) i) { case VIR_DOMAIN_HYPERV_RELAXED: diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 5592c99f3b..f9a195e991 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -273,7 +273,7 @@ qemuValidateDomainDefFeatures(const virDomainDef *def, break; case VIR_DOMAIN_FEATURE_HYPERV: - if (def->features[i] != VIR_TRISTATE_SWITCH_ABSENT && + if (def->features[i] != VIR_DOMAIN_HYPERV_MODE_NONE && !ARCH_IS_X86(def->os.arch) && !qemuDomainIsARMVirt(def)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Hyperv features are not supported for "