Skip to content

Latest commit

 

History

History
181 lines (129 loc) · 6.81 KB

File metadata and controls

181 lines (129 loc) · 6.81 KB

Mile.HyperV Definition References

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.

Microsoft Hypervisor Wrappers

https://github.com/rust-vmm/mshv

Microsoft Independent Guest Virtual Machine

https://github.com/microsoft/igvm

Hypervisor Top Level Functional Specification

hvgdk.h from Windows Driver Kit version 7.1.0

MIT licensed Hyper-V headers from Microsoft

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.

https://github.com/microsoft/OHCL-Linux-Kernel/tree/e9017243ba9b424f6516c4b206f454a1c2585fd2/include/uapi/hyperv

Archive of Hypervisor (Windows Drivers) documentation from Microsoft in 2013

https://gerhart01.github.io/

Geoff Chappell's hvgdk_mini researches

https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/shared/hvgdk_mini/hv_cpuid_function.htm

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.

Windows symbols

FreeBSD

https://github.com/freebsd/freebsd-src

Hyper-V integration support for macOS

https://github.com/acidanthera/MacHyperVSupport

Hyper-V Hypercall List

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.

Hyper-V Generation 2 Virtual Machine UEFI Firmware

https://github.com/microsoft/mu_msvm

Referenced Version

https://github.com/microsoft/mu_msvm/tree/3e68f1023fd09e2423060422c1320b54f5457d65

Referenced by Mile.HyperV:

  • 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

Windows Subsystem for Linux

https://github.com/microsoft/WSL

Referenced Version

https://github.com/microsoft/WSL/tree/697572d664c9371abbc53cab9cf7b4b32be1980e

Referenced by Mile.HyperV:

  • src\windows\inc\wdk.h

OpenVMM

https://github.com/microsoft/openvmm

Referenced Version

https://github.com/microsoft/openvmm/tree/52302e44c6ec35abb8cb1d316cca43326a7495e7

Referenced by Mile.HyperV:

  • vm\devices\vmbus\vmbfs\src\protocol.rs
  • vm\devices\vmbus\vmbus_ring\src\lib.rs
  • vm\devices\vmbus\vmbus_core\src\protocol.rs
  • vm\devices\hyperv_ic_protocol\src\lib.rs
  • vm\devices\hyperv_ic_protocol\src\heartbeat.rs
  • vm\devices\hyperv_ic_protocol\src\kvp.rs
  • vm\devices\hyperv_ic_protocol\src\shutdown.rs
  • vm\devices\hyperv_ic_protocol\src\timesync.rs
  • vm\devices\hyperv_ic_protocol\src\vss.rs
  • vm\devices\uidevices\src\video\protocol.rs
  • vm\devices\uidevices\src\keyboard\protocol.rs
  • vm\devices\uidevices\src\mouse\protocol.rs
  • vm\devices\storage\storvsp_protocol\src\lib.rs
  • vm\devices\net\netvsp\src\protocol.rs
  • vm\devices\net\netvsp\src\rndisprot.rs
  • vm\hv1\hvdef\src\lib.rs
  • vm\devices\pci\vpci_protocol\src\lib.rs
  • vm\hv1\hvdef\src\vbs.rs