Bug 1117465

Summary: RFE: track OS hyper-v enlightenment support
Product: [Community] Virtualization Tools Reporter: Cole Robinson <crobinso>
Component: libosinfoAssignee: Cole Robinson <crobinso>
Status: CLOSED DEFERRED QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: unspecifiedCC: berrange, cfergeau, fidencio, rik.theys
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-03-29 00:10:56 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Cole Robinson 2014-07-08 18:36:36 UTC
(cloned from boxes bug here: https://bugzilla.gnome.org/show_bug.cgi?id=732811 )

hyper-v enlightenments are paravirt optimizations that Windows VMs will use when they detect they are running on hyper-v. These bits add performance improvements Some of these optimizations can also be turned on with KVM. Some more info:

http://www.linux-kvm.org/wiki/images/0/0a/2012-forum-kvm_hyperv.pdf

After some off-list discussion with the KVM devs, here's the recommended configuration. Suggest to enable it for Windows VMs only. All Windows VMs is easiest and should be safe, but the only versions which start to support these bits are Vista+ and Server 2008+

The recommended qemu configuration is:

   -cpu ...,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time

Which maps to the libvirt XML:

   <features>
     <hyperv>
       <relaxed state='on'/>
       <vapic state='on'/>
       <spinlocks state='on' retries='8191'/>
     </hyperv>
   <features/>

   <clock ...>
     <timer name='hypervclock' present='yes'/>
   </clock>

Though there are some version caveats here:
- relaxed state='on' libvirt 1.0.0+, qemu 1.1+
- vapic, spinlocks requires libvirt 1.1.0+, qemu 1.1+
- hypervclock requires libvirt 1.2.2+, qemu 2.0.0+

AFAIK it should be safe to mix the hypervclock setting the other recommended timer settings (mentioned at https://bugzilla.redhat.com/show_bug.cgi?id=1053846 )


--- Comment #1 from Zeeshan Ali (Khattak) <zeeshanak> 2014-07-08 18:33:16 UTC ---
I think this info should be coming through libosinfo. Could you please file a
bug on that too.

Comment 2 Cole Robinson 2018-09-26 14:40:47 UTC
libosinfo likely shouldn't be determining the actual libvirt XML config here, but I think it should be tracking what hyperv features the OS supports. Likely requires new XML schema though as I'm not sure if it maps to the <device> concept

Comment 3 Cole Robinson 2019-03-29 00:10:56 UTC
There's an issue in the new upstream tracker that is already tracking this: https://gitlab.com/libosinfo/libosinfo/issues/9