Is it possible to run a Windows VM with WHPX support in Azure

Nagy, Tomas (INNIO) 20 Reputation points
2025-03-25T13:33:07.99+00:00

I have a virtual PLC which runs using qemu with whpx acceleration. I am looking if it is possible to run this in a cloud environment.

Azure Virtual Machines
Azure Virtual Machines
An Azure service that is used to provision Windows and Linux virtual machines.
9,014 questions
{count} votes

Accepted answer
  1. Arko 4,150 Reputation points Microsoft External Staff Moderator
    2025-03-31T12:17:05.74+00:00

    Running QEMU with WHPX acceleration in Azure is not supported, even with nested virtualization enabled. WHPX relies on Hyper-V virtualization extensions that are often inaccessible inside nested VMs in Azure.

    As per the screenshots you have shared so far, I can see in screenshot 1 that the error says "Hyper-V cannot be installed: Virtualization support is disabled in the firmware"

    Reason- The Azure VM does not have nested virtualization enabled, or the VM size does not support it.

    In your screenshot 2 and 3 you highlighted that PowerShell shows Hyper-V features are enabled, but the qemu-system-x86_64 fails with error- failed to initialize whpx: No space left on device and Windows Hypervisor Platform is enabled.

    But it does not guarantee WHPX will function inside Azure VMs

    Why? What are the limitations then?

    Azure VMs like Dv3/Ev3 support Hyper-V-based nested virtualization, but the WHPX driver may not initialize correctly inside these VMs because Azure controls the host hypervisor and does not expose all VT-x instructions needed for WHPX to work inside the guest. Please note that Nested VM -> WHPX -> Virtual PLC is a triple-layer virtualization—Azure -> Hyper-V VM -> QEMU with WHPX which is not a supported path.

    enter image description here

    **
    In short-** ctrlX WORKS requires WHPX, but WHPX doesn't work in Azure VMs due to virtualization constraints. Your best bet is to run it on a physical Windows machine.

    Reference document

    enter image description here

    QEMU with WHPX is a third-party virtualization application. WHPX specifically requires hardware virtualization extensions like VT-x/EPT. Microsoft explicitly states these are not supported in nested VMs for third-party hypervisors.

    I hope I was able give you clarity on whether it is possible to run a Windows VM with WHPX support in Azure. Thanks

    1 person found this answer helpful.
    0 comments No comments

2 additional answers

Sort by: Most helpful
  1. Vahid Ghafarpour 23,385 Reputation points Volunteer Moderator
    2025-03-25T19:54:07.8966667+00:00

    Thanks for posting your question in the Microsoft Q&A forum.

    Ensure the VM supports nested virtualization, which is required for WHPX (Windows Hypervisor Platform) acceleration. Next, choose a VM size that supports nested virtualization, such as the Dv3 or Ev3 series.

    ** Please don't forget to close up the thread here by upvoting and accept it as an answer if it is helpful **


  2. Alex Burlachenko 9,780 Reputation points
    2025-03-27T10:54:22.7966667+00:00

    Dear Tomas,

    Thank you for your questions here. at Q&A portal. So, Azure currently supports nested virtualization (including WHPX) on certain VM sizes, such as the Dv3/Esv3 or Dv4/Esv4 series (Intel VT-x) and NVv4 series (AMD SVM). However, WHPX acceleration specifically requires pare example A Windows 10/11 or Windows Server 2019/2022 guest OS. A host VM size that supports nested virtualization (e.g., Esv3).

    Deploy a compatible VM (e.g., E4s_v3). Enable Hyper-V and WHPX in the guest OS via PShell

    Enable-WindowsOptionalFeature
    

    Configure QEMU/KVM to use WHPX (-accel whpx).

    But be ready for some limitations par example as performance may vary based on Azure’s underlying hardware and GPU passthrough is not supported. For detailed steps, try to Microsoft’s nested virtualization documentation.

    Best regards,

    Alex

    P.S. If my answer help to you, please Accept my answer


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.