I wonder if it makes sense to add this to qemu/ga, actually?
It takes time, but ultimately it’s the one common tool for guest side
stuff. At least worth asking if there is any interest, I guess

Thanks,
michal

> On 12 Mar 2019, at 13:30, Francesco Romani <[email protected]> wrote:
>
> Hi all,
>
>
> lately I've been involved again in hyperv support. I was tasked to help 
> improve the testability of the hyperv guest configuration.
>
> Hyperv support is a set of optimizations that libvirt/qemu offer to improve 
> the runtime behaviour (stability, performance) of Windows guets.
>
>
> See for example: https://libvirt.org/formatdomain.html#elementsFeatures
>
> oVirt does support them (see for example 
> https://github.com/oVirt/vdsm/blob/master/lib/vdsm/virt/libvirtxml.py#L243) 
> and will keep supporting them
>
> because they are a key feature for windows guests.
>
>
> Up until now the easiest (only?) way to check if a hyperv optmization was 
> really enabled was to inspect the libvirt XML and/or the QEMU command line 
> flags
>
> But we wanted to have another check.
>
>
> Enter hvinfo: https://github.com/fromanirh/hvinfo
>
> hvinfo is a simple tool that decodes CPUID informations according to the 
> publicly-available HyperV specs 
> (https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/live/tlfs)
>  and report what the guest sees.
>
> It takes no arguments - just run it!-, it requires no special privileges and 
> emits easy to consume JSON. It is designed to help and integrate into fully 
> automated CI/QA.
>
>
> Being a commandline tool, is hard to give a "screenshot", so let me just 
> report sample output (admin privileges not actually required)
>
> Windows PowerShell
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> PS C:\Users\admin> cd .\Downloads\
> PS C:\Users\admin\Downloads> .\hvinfo.exe
> {
>   "HyperVsupport": true,
>   "Features": {
>     "GuestDebugging": false,
>     "PerformanceMonitor": false,
>     "PCPUDynamicPartitioningEvents": true,
>     "HypercallInputParamsXMM": false,
>     "VirtualGuestIdleState": false,
>     "HypervisorSleepState": false,
>     "NUMADistanceQuery": false,
>     "TimerFrequenciesQuery": false,
>     "SytheticMCEInjection": false,
>     "GuestCrashMSR": false,
>     "DebugMSR": false,
>     "NPIEP": false,
>     "DisableHypervisorAvailable": false,
>     "ExtendedGvaRangesForFlushVirtualAddressList": false,
>     "HypercallOutputReturnXMM": false,
>     "SintPollingMode": false,
>     "HypercallMsrLock": false,
>     "UseDirectSyntheticTimers": false
>   },
>   "Recommendations": {
>     "HypercallAddressSpaceSwitch": false,
>     "HypercallLocalTLBFlush": false,
>     "HypercallRemoteTLBFlush": false,
>     "MSRAPICRegisters": true,
>     "MSRSystemReset": false,
>     "RelaxedTiming": true,
>     "DMARemapping": false,
>     "InterruptRemapping": false,
>     "X2APICMSR": false,
>     "DeprecatingAutoEOI": false,
>     "SyntheticClusterIPI": false,
>     "ExProcessorMasks": false,
>     "Nested": false,
>     "INTForMBECSyscalls": false,
>     "NestedEVMCS": false,
>     "SyncedTimeline": false,
>     "DirectLocalFlushEntire": false,
>     "NoNonArchitecturalCoreSharing": false,
>     "SpinlockRetries": 8191
>   }
> }
> PS C:\Users\admin\Downloads>
>
>
> Caveat: the name of the features are the same of the spec, so we need 
> mappings for oVirt flags, libvirt flags and so on.
>
> For example
>
> libvirt xml
>
> domain.features.hyperv.relaxed[state="on"]
>
> maps to hvinfo json
>
> Features.Recommendations.RelaxedTiming=true
>
>
> Feel free to test it and report any issue
>
>
> Bests,
>
>
> --
> Francesco Romani
> Senior SW Eng., Virtualization R&D
> Red Hat
> IRC: fromani github: @fromanirh
> _______________________________________________
> Devel mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> Privacy Statement: https://www.ovirt.org/site/privacy-policy/
> oVirt Code of Conduct: 
> https://www.ovirt.org/community/about/community-guidelines/
> List Archives: 
> https://lists.ovirt.org/archives/list/[email protected]/message/Z6OSC4RLC3TXINE2FV5NKYYHOI5L7PLN/
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Privacy Statement: https://www.ovirt.org/site/privacy-policy/
oVirt Code of Conduct: 
https://www.ovirt.org/community/about/community-guidelines/
List Archives: 
https://lists.ovirt.org/archives/list/[email protected]/message/5U4L25COXZDCZO2NMX6T7PGUE4NREVMC/

Reply via email to