qemu: Validate TCG feature is enabled only for TCG domains

After previous commit it's possible for domains to fine tune TCG
features (well, just one - tb-cache). Check that domain has TCG
enabled, otherwise the feature makes no sense.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Michal Privoznik 2021-11-30 13:37:54 +01:00
parent f106788069
commit 16159d5152
2 changed files with 17 additions and 1 deletions

View File

@ -2074,7 +2074,7 @@ are:
=========== ============================================== =================================================== ==============
Feature Description Value Since
=========== ============================================== =================================================== ==============
tb-cache The size of translation block cache size an integer :since:`8.0.0`
tb-cache The size of translation block cache size an integer (a multiple of MiB) :since:`8.0.0`
=========== ============================================== =================================================== ==============
:anchor:`<a id="elementsTime"/>`

View File

@ -295,6 +295,22 @@ qemuValidateDomainDefFeatures(const virDomainDef *def,
break;
case VIR_DOMAIN_FEATURE_TCG:
if (def->features[i] == VIR_TRISTATE_SWITCH_ON) {
if (def->virtType != VIR_DOMAIN_VIRT_QEMU) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("TCG features are incompatible with domain type '%s'"),
virDomainVirtTypeToString(def->virtType));
return -1;
}
if ((def->tcg_features->tb_cache & 0x3ff) != 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("tb-cache size must be an integer multiple of MiB"));
return -1;
}
}
break;
case VIR_DOMAIN_FEATURE_SMM:
case VIR_DOMAIN_FEATURE_KVM:
case VIR_DOMAIN_FEATURE_XEN: