]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_validate: Reflect dependencies of hv-stimer
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 7 Oct 2025 11:42:19 +0000 (13:42 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 14 Oct 2025 07:45:59 +0000 (09:45 +0200)
Per QEMU documentation (docs/system/i386/hyperv.rst):

``hv-stimer``
  Enables Hyper-V synthetic timers. <snip/>

  Requires: ``hv-vpindex``, ``hv-synic``, ``hv-time``

Reflect these dependencies when validating domain definition.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_validate.c

index 279f72f50a7f611f732ff333093c5a93a83fa99a..60bf623716d8c134f70f819e24c368afbdc29cbc 100644 (file)
@@ -114,6 +114,19 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef *def)
 
     CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_SYNIC, VIR_DOMAIN_HYPERV_VPINDEX);
 
+    if (def->hyperv_features[VIR_DOMAIN_HYPERV_STIMER] == VIR_TRISTATE_SWITCH_ON) {
+        if (!virDomainDefHasTimer(def, VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("'%1$s' hyperv feature requires '%2$s' timer"),
+                           virDomainHypervTypeToString(VIR_DOMAIN_HYPERV_STIMER),
+                           virDomainTimerNameTypeToString(VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK));
+            return -1;
+        }
+    }
+
+    CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_STIMER, VIR_DOMAIN_HYPERV_VPINDEX);
+    CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_STIMER, VIR_DOMAIN_HYPERV_SYNIC);
+
     return 0;
 }