arch: x86: Add comprehensive Hyper-V CPUID features for nested virtualization #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This patch enhances Hyper-V enlightenment support to enable nested virtualization scenarios, specifically allowing Windows guests to run nested Hyper-V VMs and WSL2 on AMD and Intel platforms.
Problem:
When running Windows Server 2025 as a guest with Hyper-V role enabled, nested VM creation fails with 'Hyper-V component not running' errors, and WSL2 installation fails with HCS_E_HYPERV_NOT_INSTALLED. This occurs despite Hyper-V services (vmms, vmcompute) starting successfully and Windows detecting SLAT support.
Root Cause:
Cloud Hypervisor was exposing only 4 out of 13 critical Hyper-V partition privilege flags in CPUID leaf 0x40000003. Windows performs privilege checks before allowing nested VM operations, and without flags like HV_HYPERCALL_AVAILABLE and HV_ACCESS_FREQUENCY_MSRS, it refuses to start nested VMs.
Solution:
This patch implements the following changes based on QEMU's Hyper-V implementation (target/i386/kvm/hyperv-proto.h) and Microsoft's Hypervisor Top-Level Functional Specification (TLFS):
Nested Virtualization Detection:
Enhanced CPUID Leaf 0x40000003 (Partition Privileges):
Enhanced CPUID Leaf 0x40000003 (Implementation Features, EDX):
New CPUID Leaf 0x4000000A (Nested Features):
Enhanced CPUID Leaf 0x40000004 (Recommendations):
Comprehensive Logging:
Testing:
Expected Results: