Skip to content

Supported Platforms and Features

Ivan Roberto de Oliveira edited this page Jan 14, 2023 · 20 revisions

Platforms supported by virt86

virt86 supports the following hypervisors and operating systems:

Windows Linux macOS
Intel HAXM
Windows Hypervisor Platform 1 - -
KVM - -
Hypervisor.Framework - - ⚠️2

1 Windows Hypervisor Platform requires Windows 10 SDK 10.0.17134.0 or later.
2 Hypervisor.Framework support is under development. See issue #1 and the hvf branch.

Virtualization platform technologies

The hypervisor platforms themselves support the following hardware-assisted virtualization technologies:

Intel VT-x AMD-V
Intel HAXM -
Windows Hypervisor Platform
KVM
Hypervisor.Framework N/A

Feature matrix

These are the features exposed by each hypervisor platform:

Feature
PlatformFeatures field
virt86
version
HAXM WHPX KVM HvF1
Unrestricted Guest2
unrestrictedGuest
1.0.0 ?
Extended Page Tables (EPT)2
extendedPageTables
1.0.0 ?
Guest debugginga
guestDebugging
1.0.0
(7.3.0)
- ?
Guest memory protection
guestMemoryProtection
1.0.0
(7.2.0)
- ?
Dirty page tracking
dirtyPageTracking
1.0.0 -
(10.0.17763.0)
?
Partial dirty bitmap queryingb
partialDirtyBitmap
1.0.0 -
(10.0.17763.0)
- ?
Large memory allocation (> 4 GiB)
largeMemoryAllocation
1.0.0
(7.1.0)
?
GPA range aliasing
memoryAliasing
1.0.1 ?
Partial GPA range unmapping
partialUnmapping
1.0.0
(10.0.17763.0)
- ?
Extended VM exits
extendedVMExits
1.0.0 - 3
(10.0.17763.0)
4 ?
Custom CPUID responses
customCPUIDs
1.0.0 -
(10.0.17134.0)
5 ?
Guest TSC scaling and virtual offsetc
guestTSCScaling
1.2.0 -
(Insider Preview 19H2)
2 ?

1 virt86 does not implement an adapter for the Hypervisor.Framework yet. See issue #1.
2 Depends on the capabilities of the host's CPU.
3 VM exit on CPUID instruction, MSR access and CPU exception.
4 VM exit on CPU exception only.
5 Also provides a list of supported CPUID responses and default values in supportedCustomCPUIDs.

a Single stepping, software and hardware breakpoints.
b Allows querying subsets of mapped GPA ranges. If dirty page tracking is supported but partial dirty bitmap querying is not, the hypervisor will only allow querying entire mapped GPA ranges.
c Not implemented yet. See issue #27.