File virtinst-add-hyperv-performance-options.patch of Package virt-manager

References: bsc#1228227
These additional options if used will improve performance for windows VMs.
vpindex makes sense in conjunction with synic and stimer 
synic requires vpindex
stimer requires vpindex and synic

Index: virt-manager-4.1.0/virtinst/domain/features.py
===================================================================
--- virt-manager-4.1.0.orig/virtinst/domain/features.py
+++ virt-manager-4.1.0/virtinst/domain/features.py
@@ -32,7 +32,9 @@ class DomainFeatures(XMLBuilder):
     hyperv_spinlocks = XMLProperty("./hyperv/spinlocks/@state", is_onoff=True)
     hyperv_spinlocks_retries = XMLProperty("./hyperv/spinlocks/@retries",
                                            is_int=True)
+    hyperv_vpindex = XMLProperty("./hyperv/vpindex/@state", is_onoff=True)
     hyperv_synic = XMLProperty("./hyperv/synic/@state", is_onoff=True)
+    hyperv_stimer = XMLProperty("./hyperv/stimer/@state", is_onoff=True)
 
     vmport = XMLProperty("./vmport/@state", is_onoff=True)
     kvm_hidden = XMLProperty("./kvm/hidden/@state", is_onoff=True)
@@ -84,3 +86,9 @@ class DomainFeatures(XMLBuilder):
                 self.hyperv_spinlocks = True
             if self.hyperv_spinlocks_retries is None:
                 self.hyperv_spinlocks_retries = 8191
+            if self.hyperv_vpindex is None:
+                self.hyperv_vpindex = True
+            if self.hyperv_synic is None:
+                self.hyperv_synic = True
+            if self.hyperv_stimer is None:
+                self.hyperv_stimer = True
Index: virt-manager-4.1.0/virtinst/cli.py
===================================================================
--- virt-manager-4.1.0.orig/virtinst/cli.py
+++ virt-manager-4.1.0/virtinst/cli.py
@@ -2989,7 +2989,9 @@ class ParserFeatures(VirtCLIParser):
         "hyperv.relaxed.state": "hyperv_relaxed",
         "hyperv.spinlocks.state": "hyperv_spinlocks",
         "hyperv.spinlocks.retries": "hyperv_spinlocks_retries",
+        "hyperv.vpindex.state": "hyperv_vpindex",
         "hyperv.synic.state": "hyperv_synic",
+        "hyperv.stimer.state": "hyperv_stimer",
     }
 
     @classmethod
@@ -3010,7 +3012,9 @@ class ParserFeatures(VirtCLIParser):
         cls.add_arg("hyperv.relaxed.state", "hyperv_relaxed", is_onoff=True)
         cls.add_arg("hyperv.spinlocks.state", "hyperv_spinlocks", is_onoff=True)
         cls.add_arg("hyperv.spinlocks.retries", "hyperv_spinlocks_retries")
+        cls.add_arg("hyperv.vpindex.state", "hyperv_vpindex", is_onoff=True)
         cls.add_arg("hyperv.synic.state", "hyperv_synic", is_onoff=True)
+        cls.add_arg("hyperv.stimer.state", "hyperv_stimer", is_onoff=True)
 
         cls.add_arg("vmport.state", "vmport", is_onoff=True)
         cls.add_arg("kvm.hidden.state", "kvm_hidden", is_onoff=True)
Index: virt-manager-4.1.0/tests/test_cli.py
===================================================================
--- virt-manager-4.1.0.orig/tests/test_cli.py
+++ virt-manager-4.1.0/tests/test_cli.py
@@ -555,7 +555,7 @@ memorytune0.vcpus=0-3,memorytune0.node0.
 --metadata title=my-title,description=my-description,uuid=00000000-1111-2222-3333-444444444444,genid=e9392370-2917-565e-692b-d057f46512d6,genid_enable=yes
 
 
---features apic.eoi=off,hap=on,hyperv.synic.state=on,hyperv.reset.state=off,hyperv.spinlocks.state=on,hyperv.spinlocks.retries=5678,pae=on,pmu.state=on,pvspinlock.state=off,smm.state=off,viridian=on,vmcoreinfo.state=on,vmport.state=off,kvm.hidden.state=on,hyperv.vapic.state=off,hyperv.relaxed.state=off,gic.version=host,kvm.hint-dedicated.state=on,kvm.poll-control.state=on,ioapic.driver=qemu,acpi=off,eoi=on,privnet=on,hyperv_synic=on,hyperv_reset=on,hyperv_spinlocks=on,hyperv_spinlocks_retries=5678,vmport=off,pmu=off,vmcoreinfo=on,kvm_hidden=off,hyperv_vapic=on,smm=off
+--features apic.eoi=off,hap=on,hyperv.vpindex.state=on,hyperv.synic.state=on,hyperv.stimer.state=on,hyperv.reset.state=off,hyperv.spinlocks.state=on,hyperv.spinlocks.retries=5678,pae=on,pmu.state=on,pvspinlock.state=off,smm.state=off,viridian=on,vmcoreinfo.state=on,vmport.state=off,kvm.hidden.state=on,hyperv.vapic.state=off,hyperv.relaxed.state=off,gic.version=host,kvm.hint-dedicated.state=on,kvm.poll-control.state=on,ioapic.driver=qemu,acpi=off,eoi=on,privnet=on,hyperv_vpindex=on,hyperv_synic=on,hyperv_stimer=on,hyperv_reset=on,hyperv_spinlocks=on,hyperv_spinlocks_retries=5678,vmport=off,pmu=off,vmcoreinfo=on,kvm_hidden=off,hyperv_vapic=on,smm=off
 
 
 --clock offset=utc,hpet_present=no,rtc_tickpolicy=merge,timer2.name=hypervclock,timer3.name=pit,timer1.present=yes,timer3.tickpolicy=delay,timer2.present=no,timer4.name=rtc,timer5.name=tsc,timer6.name=tsc,timer4.track=wall,timer5.frequency=10,timer6.mode=emulate,timer7.name=rtc,timer7.tickpolicy=catchup,timer7.catchup.threshold=123,timer7.catchup.slew=120,timer7.catchup.limit=10000,rtc_present=no,pit_present=yes,pit_tickpolicy=catchup,tsc_present=no,platform_present=no,hypervclock_present=no,platform_tickpolicy=foo,hpet_tickpolicy=bar,tsc_tickpolicy=wibble,kvmclock_tickpolicy=wobble,hypervclock_tickpolicy=woo
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-many-devices.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-many-devices.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-many-devices.xml
@@ -138,7 +138,9 @@
       <vapic state="on"/>
       <relaxed state="off"/>
       <spinlocks state="on" retries="5678"/>
+      <vpindex state="on"/>
       <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
     <vmport state="off"/>
     <kvm>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-win7-uefi.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-win7-uefi.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-win7-uefi.xml
@@ -23,6 +23,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
     <vmport state="off"/>
   </features>
@@ -124,6 +127,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
     <vmport state="off"/>
   </features>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-kvm-win10.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-kvm-win10.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-kvm-win10.xml
@@ -21,6 +21,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
     <vmport state="off"/>
   </features>
@@ -96,6 +99,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
     <vmport state="off"/>
   </features>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-os-detect-fail-fallback.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-os-detect-fail-fallback.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-os-detect-fail-fallback.xml
@@ -19,6 +19,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
   </features>
   <clock offset="localtime"/>
@@ -67,6 +70,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
   </features>
   <clock offset="localtime"/>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
@@ -21,6 +21,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
     <vmport state="off"/>
   </features>
@@ -93,6 +96,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
     <vmport state="off"/>
   </features>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
@@ -20,6 +20,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
   </features>
   <cpu>
@@ -72,6 +75,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
   </features>
   <cpu>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
@@ -19,6 +19,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
   </features>
   <clock offset="localtime"/>
@@ -78,6 +81,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
   </features>
   <clock offset="localtime"/>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
@@ -20,6 +20,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
   </features>
   <cpu mode="host-passthrough"/>
@@ -111,6 +114,9 @@
       <relaxed state="on"/>
       <vapic state="on"/>
       <spinlocks state="on" retries="8191"/>
+      <vpindex state="on"/>
+      <synic state="on"/>
+      <stimer state="on"/>
     </hyperv>
   </features>
   <cpu mode="host-passthrough"/>
openSUSE Build Service is sponsored by