virDomainFeaturesDefParse: Inline SMM parsing

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Tim Wiederhake 2021-06-22 14:22:53 +02:00 committed by Michal Privoznik
parent 6e872ab3f4
commit eeb94215b0

View File

@ -17554,8 +17554,7 @@ virDomainFeaturesDefParse(virDomainDef *def,
case VIR_DOMAIN_FEATURE_HAP:
case VIR_DOMAIN_FEATURE_PMU:
case VIR_DOMAIN_FEATURE_PVSPINLOCK:
case VIR_DOMAIN_FEATURE_VMPORT:
case VIR_DOMAIN_FEATURE_SMM: {
case VIR_DOMAIN_FEATURE_VMPORT: {
virTristateSwitch state;
if (virXMLPropTristateSwitch(nodes[i], "state",
@ -17569,6 +17568,31 @@ virDomainFeaturesDefParse(virDomainDef *def,
break;
}
case VIR_DOMAIN_FEATURE_SMM: {
virTristateSwitch state;
if (virXMLPropTristateSwitch(nodes[i], "state",
VIR_XML_PROP_NONE, &state) < 0)
return -1;
if ((state == VIR_TRISTATE_SWITCH_ABSENT) ||
(state == VIR_TRISTATE_SWITCH_ON)) {
int rv = virParseScaledValue("string(./features/smm/tseg)",
"string(./features/smm/tseg/@unit)",
ctxt,
&def->tseg_size,
1024 * 1024, /* Defaults to mebibytes */
ULLONG_MAX,
false);
if (rv < 0)
return -1;
def->features[val] = VIR_TRISTATE_SWITCH_ON;
def->tseg_specified = rv != 0;
}
break;
}
case VIR_DOMAIN_FEATURE_GIC:
if (virXMLPropEnum(nodes[i], "version", virGICVersionTypeFromString,
VIR_XML_PROP_NONZERO, &def->gic_version) < 0)
@ -17670,19 +17694,6 @@ virDomainFeaturesDefParse(virDomainDef *def,
}
VIR_FREE(nodes);
if (def->features[VIR_DOMAIN_FEATURE_SMM] == VIR_TRISTATE_SWITCH_ON) {
int rv = virParseScaledValue("string(./features/smm/tseg)",
"string(./features/smm/tseg/@unit)",
ctxt,
&def->tseg_size,
1024 * 1024, /* Defaults to mebibytes */
ULLONG_MAX,
false);
if (rv < 0)
return -1;
def->tseg_specified = rv;
}
if (def->features[VIR_DOMAIN_FEATURE_MSRS] == VIR_TRISTATE_SWITCH_ON) {
virDomainMsrsUnknown unknown;
xmlNodePtr node = NULL;