[PATCH] vmx: support HPET timers configuration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



All VMs are being created with no hpet timer defined. Check if the
VM definition XML file enables HPET and reflect that on the VMX
file.

Signed-off-by: João Sena Ribeiro <joao.ribeiro@xxxxxxxxxxx>
---
 src/vmx/vmx.c | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index de16c1f634..d7e116dd07 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -65,7 +65,7 @@ def->maxvcpus = <value>           <=>   numvcpus = "<value>"
 def->cpumask = <uint list>        <=>   sched.cpu.affinity = "<uint list>"
 def->cputune.shares = <value>     <=>   sched.cpu.shares = "<value>"            # with handling for special values
                                                                                 # "high", "normal", "low"
-
+def->ntimers                      <=>   hpet.present = "<value>"                # "true", "false"
 
 
 ################################################################################
@@ -3496,6 +3496,35 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOption *xmlopt, virDomainDef
         }
     }
 
+    /* def:clock.ntimers */
+    for (i = 0; i < def->clock.ntimers; i++) {
+        switch ((virDomainTimerNameType)def->clock.timers[i]->name) {
+        case VIR_DOMAIN_TIMER_NAME_HPET:
+            if (def->clock.timers[i]->present == VIR_TRISTATE_BOOL_YES) {
+                virBufferAddLit(&buffer, "hpet0.present = \"true\"\n");
+            } else if (def->clock.timers[i]->present == VIR_TRISTATE_BOOL_NO) {
+                virBufferAddLit(&buffer, "hpet0.present = \"false\"\n");
+            }
+            break;
+
+        case VIR_DOMAIN_TIMER_NAME_TSC:
+        case VIR_DOMAIN_TIMER_NAME_PLATFORM:
+        case VIR_DOMAIN_TIMER_NAME_KVMCLOCK:
+        case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK:
+        case VIR_DOMAIN_TIMER_NAME_RTC:
+        case VIR_DOMAIN_TIMER_NAME_PIT:
+        case VIR_DOMAIN_TIMER_NAME_ARMVTIMER:
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("unsupported timer type (name) '%1$s'"),
+                           virDomainTimerNameTypeToString(def->clock.timers[i]->name));
+            goto cleanup;
+
+        case VIR_DOMAIN_TIMER_NAME_LAST:
+            break;
+
+        }
+    }
+
     /* def:graphics */
     for (i = 0; i < def->ngraphics; ++i) {
         switch (def->graphics[i]->type) {
-- 
2.34.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux