QXL: Windows 10/11 UI freezes with HiDPI scaling (125–150%)

hike.linden

New Member
Sep 14, 2025
1
0
1
When using QXL + SPICE on Windows guests with display scaling set to 125% or 150%, the UI freezes after a few minutes of normal use. The VM remains alive on the network (ARP/RDP responds), so it looks like a display path freeze, not a full guest hang. Switching the display adapter to virtio(-vga)/virtio-gpu avoids the issue but loses QXL auto-resize behavior. This appears related to the QXL/cursor path regression discussed upstream for 9.1.x and fixed in the 10.0.x series.

Debian bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1084199
QEMU issue: https://gitlab.com/qemu-project/qemu/-/issues/1628

Reproducible: Always

Steps to Reproduce:
1 - Create or run a VM with Video set to QXL and SPICE display.
2 - In the Windows guest, set display scaling to 125% or 150%.
3 - Use the system (Explorer, browser). After some minutes, the guest UI stops updating and input no longer affects the on-screen UI, while the VM continues to respond on the network.
Actual Results:
The guest UI freezes after a short period; CPU usage stays low; libvirt reports the domain as running; the VM is reachable over the network (e.g., via RDP/ARP).

Expected Results:
No freezes when using QXL with 125–150% scaling; display should remain responsive.

Debian bug 1084199 (marked fixed in qemu 1:10.0.0~rc2+ds-1): https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1084199

QEMU upstream issue 1628 (cursor/graphics stream desync discussion): https://gitlab.com/qemu-project/qemu/-/issues/1628

Fedora fixed the issue based on my report: https://bugzilla.redhat.com/show_bug.cgi?id=2389415

Config:
proxmox-ve: 9.0.0 (running kernel: 6.14.11-4-pve)
pve-manager: 9.0.11 (running version: 9.0.11/3bf5476b8a4699e2)
proxmox-kernel-helper: 9.0.4
proxmox-kernel-6.14.11-4-pve-signed: 6.14.11-4
proxmox-kernel-6.14: 6.14.11-4
proxmox-kernel-6.14.11-3-pve-signed: 6.14.11-3
proxmox-kernel-6.14.11-2-pve-signed: 6.14.11-2
proxmox-kernel-6.14.11-1-pve-signed: 6.14.11-1
proxmox-kernel-6.14.8-2-pve-signed: 6.14.8-2
ceph-fuse: 19.2.3-pve1
corosync: 3.1.9-pve2
criu: 4.1.1-1
frr-pythontools: 10.3.1-1+pve4
ifupdown2: 3.3.0-1+pmx10
intel-microcode: 3.20250512.1
ksm-control-daemon: 1.5-1
libjs-extjs: 7.0.0-5
libproxmox-acme-perl: 1.7.0
libproxmox-backup-qemu0: 2.0.1
libproxmox-rs-perl: 0.4.1
libpve-access-control: 9.0.3
libpve-apiclient-perl: 3.4.0
libpve-cluster-api-perl: 9.0.6
libpve-cluster-perl: 9.0.6
libpve-common-perl: 9.0.11
libpve-guest-common-perl: 6.0.2
libpve-http-server-perl: 6.0.4
libpve-network-perl: 1.1.8
libpve-rs-perl: 0.10.10
libpve-storage-perl: 9.0.13
libspice-server1: 0.15.2-1+b1
lvm2: 2.03.31-2+pmx1
lxc-pve: 6.0.5-1
lxcfs: 6.0.4-pve1
novnc-pve: 1.6.0-3
proxmox-backup-client: 4.0.16-1
proxmox-backup-file-restore: 4.0.16-1
proxmox-backup-restore-image: 1.0.0
proxmox-firewall: 1.2.0
proxmox-kernel-helper: 9.0.4
proxmox-mail-forward: 1.0.2
proxmox-mini-journalreader: 1.6
proxmox-offline-mirror-helper: 0.7.2
proxmox-widget-toolkit: 5.0.6
pve-cluster: 9.0.6
pve-container: 6.0.13
pve-docs: 9.0.8
pve-edk2-firmware: 4.2025.02-4
pve-esxi-import-tools: 1.0.1
pve-firewall: 6.0.3
pve-firmware: 3.17-2
pve-ha-manager: 5.0.5
pve-i18n: 3.6.1
pve-qemu-kvm: 10.0.2-4
pve-xtermjs: 5.5.0-2
qemu-server: 9.0.23
smartmontools: 7.4-pve1
spiceterm: 3.4.1
swtpm: 0.8.0+pve2
vncterm: 1.9.1
zfsutils-linux: 2.3.4-pve1