Windows Hypervisor Platform

Windows Hypervisor Platform 是第三方虚拟机监控程序使用 Hyper-V 硬件加速 的 Windows API。

它建立在 Vid 上,后者与 Linux mshv 驱动使用同一组 hypercall。

QEMU 对应后端名为 WHPX,支持 x86_64 和 arm64 Windows 硬件加速。

前提条件

必须安装 Windows Hypervisor Platform 功能。

安装

客户端 Windows 使用 Windows 功能(optionalfeatures.exe),服务器版可以 通过服务器管理器的基于功能安装。

也可使用命令行: DISM /online /Enable-Feature /FeatureName:HypervisorPlatform /All

最低系统版本

x86_64 从 Windows 10 2004 开始经过测试,更早版本可能可用,但未验证。

arm64 最低要求 Windows 11 24H2,并安装 2025 年 4 月可选更新或 5 月安全更新。

更早的 ARM64 24H2 提供预发布 API,QEMU 不支持。

快速开始

x86_64 使用 WHPX:

$ qemu-system-x86_64.exe -accel whpx -M pc \
    -smp cores=2 -m 2G -device ich9-usb-ehci1 \
    -device usb-tablet -hda OS.qcow2

arm64 使用 WHPX:

$ qemu-system-aarch64.exe -accel whpx -M virt \
    -cpu host -smp cores=2 -m 2G \
    -bios edk2-aarch64-code.fd \
    -device ramfb -device nec-usb-xhci \
    -device usb-kbd -device usb-tablet \
    -hda OS.qcow2

arm64 非 Windows 客户机可用 virtio-gpu-pci,相比 ramfb 功能更多,但它不 兼容 Windows UEFI GOP,因为后者要求线性帧缓冲。

加速器选项

x86_64

-trace whpx_unsupported_msr_access 记录对未文档化 MSR 的访问。

-d invalid_mem 跟踪未映射客户机物理地址的访问。

-accel whpx,ssd=off 禁用独立安全域,即客户机进出时的 BTB 刷新。 这显著提高 MMIO 性能,但削弱安全缓解措施。

x86_64 已知问题

使用传统 VGA 模式的客户机

QEMU 不直接映射帧缓冲内存的 VGA 模式,性能会很差。

可改用较新图形模式,或用 TCG 运行受影响客户机。

用 MMX、SSE、AVX 访问 MMIO 的客户机

target/i386/emulate 当前不支持这些指令访问 MMIO 区域。

MMX 会报告 Unimplemented handler,更新的指令则解码失败。

Windows 10 的 PIC 中断

使用 Hyper-V 中断控制器时,传统 PIC 中断不能唤醒 HLT 状态客户机。

因此 Windows 10 默认禁用 Hyper-V 中断控制器。可用 -M q35,pic=off 禁用 PIC 并启用它,此配置推荐 UEFI。

正常使用时不应手动设置 -M kernel-irqchip=,该选项仅保留用于调试。

Windows 11 已知问题

arm64

ISA 功能支持

目前不支持 SVE 和 SME。