Xen's Hyper-V hypercall extensions (aka Viridian) not enabled for Windows Qubes #9821
Labels
affects-4.2
This issue affects Qubes OS 4.2.
C: windows-vm
C: Xen
diagnosed
Technical diagnosis has been performed (see issue comments).
P: default
Priority: default. Default priority for new issues, to be replaced given sufficient information.
waiting for upstream
This issue is waiting for something from an upstream project to arrive in Qubes. Remove when closed.
Qubes OS release
Qubes OS 4.2
Brief summary
I've prepared 2 patches (with tests!) backported to 8.9.0 implementing the
<hyperv/>
flags for Xen. This allows users of Qubes Stable to opt-in to these features by editing their xen.xml template, while not affecting existing users with the<viridian/>
flag set.Despite
<viridian/>
being set in the libvirt domain config files, it doesn't seem to be taking effect.Logs under
/var/log/libvirt/libxl
show"viridian": "False"
. I've confirmed the HV cpu flags are not enabled (only Xen's flags are visible) using thecpuid
command on a Linux HVM qube.Reviewing the libvirt source code shows that this feature is unimplemented or perhaps regressed in a refactor.
Steps to reproduce
cpuid
to confirm that no HV enlightments are enabledExpected behavior
Xen Hyper-V interfaces are exposed to Windows to improve performance.
Actual behavior
The
<viridian/>
setting is ignored.Additional information
I've built and tested libvirt 8.9.0 with these changes under a Linux HVM (with PCIe passthrough), Windows 10 and Windows 2025. Linux is appropriately unchanged, while Windows 10 and Server 2025 have much better performance.
Linux HVM showing HV flags:
cpuid (cygwin) on Windows confirms flags are on and recommended:
The text was updated successfully, but these errors were encountered: