[PATCH v3 2/4] qemu: Validate TCG feature is enabled only for TCG domains

Michal Privoznik mprivozn at redhat.com
Thu Dec 2 08:53:34 UTC 2021


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 at redhat.com>
---
 docs/formatdomain.rst    |  2 +-
 src/qemu/qemu_validate.c | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

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:`<a id="elementsTime"/>`
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index a7c89f27cf..3a1c279e63 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 & 0xff) {
+                    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:
-- 
2.32.0




More information about the libvir-list mailing list