diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 041dfc699d..98eb7b7481 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -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:`` diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 2c9ccbd4fd..5592c99f3b 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -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: