Mile.HyperV uses Microsoft Hypervisor Wrappers, Microsoft Independent Guest Virtual Machine, Hypervisor Top Level Functional Specification v6.0b, hvgdk.h from Windows Driver Kit version 7.1.0, MIT licensed Hyper-V headers from Microsoft, Archive of Hypervisor (Windows Drivers) documentations from Microsoft in 2013, Geoff Chappell's hvgdk_mini researches, Windows symbols, FreeBSD and Hyper-V integration support for macOS to create the definition headers.
https://github.com/rust-vmm/mshv
https://github.com/microsoft/igvm
Kenji Mouri knows these MIT licensed Hyper-V headers from Microsoft because he had fired a GitHub issue: rust-vmm/mshv#117
Here is the original reference from Microsoft. They create a Linux kernel patch called "[PATCH v4 13/15] uapi: hyperv: Add mshv driver headers defining hypervisor ABIs" to try to make their mshv implementation merge to the mainline.
Here is the extracted reference from the mentioned patch created by Microsoft.
Here is also the newer version for MIT licensed headers from Microsoft.
Note: This document only helps me to know hvgdk.h existance in Windows Driver Kit version 7.1.0 and symbols in urlmon.dll have the correct name for HV_CPUID_FUNCTION.
- Build 26100
- Build 14393
- Build 14347
https://github.com/freebsd/freebsd-src
https://github.com/acidanthera/MacHyperVSupport
According to Hypervisor Top Level Functional Specification and MIT licensed Hyper-V headers from Microsoft, I create a list for knowing which hypercalls need to be contained in Mile.HyperV.
All items from Appendix A of Hypervisor Top Level Functional Specification. All yellow items are defined in MIT licensed Hyper-V headers from Microsoft. All green items are detail defined in Hypervisor Top Level Functional Specification.
https://github.com/microsoft/mu_msvm
https://github.com/microsoft/mu_msvm/tree/258361bd0d61320df8984705111d94af20b4d8a4
- MsvmPkg\Include\Hv\HvStatus.h
- MsvmPkg\Include\Hv\HvGuest.h
- MsvmPkg\Include\Hv\HvGuestCpuid.h
- MsvmPkg\Include\Hv\HvGuestMsr.h
- MsvmPkg\Include\Hv\HvGuestSyntheticInterrupts.h
- MsvmPkg\Include\Hv\HvGuestHypercall.h
- MsvmPkg\MsvmPkg.dec
- MsvmPkg\Include\Vmbus\NtStatus.h
- MsvmPkg\Include\MsvmBase.h
- MsvmPkg\VmbusDxe\VmbusP.h
- MsvmPkg\VmbusDxe\ChannelMessages.h
- MsvmPkg\Include\Vmbus\VmbusPacketFormat.h
- MsvmPkg\VideoDxe\SynthVidProtocol.h
- MsvmPkg\VideoDxe\VramSize.h
- MsvmPkg\Include\Protocol\SynthKeyProtocol.h
- MsvmPkg\StorvscDxe\VstorageProtocol.h
- MsvmPkg\NetvscDxe\nvspprotocol.h
- MsvmPkg\NetvscDxe\rndis.h
- MsvmPkg\VpcivscDxe\wdm.h
- MsvmPkg\VpcivscDxe\VpciProtocol.h
- MsvmPkg\VpcivscDxe\PciBars.h
- MsvmPkg\Include\Protocol\VmbusFileSystem.h