[QEMU] How to make SPICE work with GVT-g + DMA-BUF

kknd0

New Member
Dec 29, 2023
6
0
1
I know this post is a bit off-topic and I should go to the QEMU-related forums for help, but I don't know where to ask for help.

Since I'm experiencing this problem with PVE, I thought someone here might be able to help me out.

PVE Info

proxmox-ve: 8.1.0 (running kernel: 6.5.13-1-pve)
pve-manager: 8.1.4 (running version: 8.1.4/ec5affc9e41f1d79)
proxmox-kernel-helper: 8.1.0
proxmox-kernel-6.5: 6.5.13-1
proxmox-kernel-6.5.13-1-pve: 6.5.13-1


QEMU Info
pve-qemu-kvm: 8.1.5-2
qemu-server: 8.0.10

Description of the problem
I try to use GVT-g + DMA-BUF and add `display=on` according to the method in this thread in the forum , vGPU display output can be displayed normally on noVNC

001.png

But when I try use SPICE, VM would not boot, come up with error: kvm: The console requires display DMABUF support.

002.png

I Google it, but get Nothing useful info,here is some links:

Bug #1926952 “SPICE support broken with 6.0” : Bugs : QEMU (launchpad.net)

GVT-g + -spice error since qemu 6 (#497) · issue · QEMU / QEMU · GitLab

The console requires display DMABUF support - Support / Virtualization - Manjaro Linux Forum

From what I understand, egl-headless is supposed to support dmf-buf, but SPICE doesn't think so!


This is the complete QEMU startup command:

Using noVNC:

Bash:
/usr/bin/kvm \
  -id 113 \
  -name 'Win11-EN-GVT-Fix,debug-threads=on' \
  -no-shutdown \
  -chardev 'socket,id=qmp,path=/var/run/qemu-server/113.qmp,server=on,wait=off' \
  -mon 'chardev=qmp,mode=control' \
  -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
  -mon 'chardev=qmp-event,mode=control' \
  -pidfile /var/run/qemu-server/113.pid \
  -daemonize \
  -smbios 'type=1,uuid=6f597e40-2f15-4505-99a3-89543fa99a06' \
  -drive 'if=pflash,unit=0,format=raw,readonly=on,file=/usr/share/pve-edk2-firmware/OVMF_CODE_4M.secboot.fd' \
  -drive 'if=pflash,unit=1,id=drive-efidisk0,format=qcow2,file=/var/lib/vz/images/113/vm-113-disk-0.qcow2' \
  -smp '4,sockets=1,cores=4,maxcpus=4' \
  -nodefaults \
  -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
  -vga none \
  -nographic \
  -display 'egl-headless,gl=core,rendernode=/dev/dri/renderD128' \
  -vnc 'unix:/var/run/qemu-server/113.vnc,password=on' \
  -cpu 'host,hv_ipi,hv_relaxed,hv_reset,hv_runtime,hv_spinlocks=0x1fff,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vendor_id=proxmox,hv_vpindex,kvm=off,+kvm_pv_eoi,+kvm_pv_unhalt' \
  -m 8192 \
  -readconfig /usr/share/qemu-server/pve-q35-4.0.cfg \
  -device 'vmgenid,guid=ebe3f347-c1b2-4a5b-b147-d5651dd52eb5' \
  -device 'usb-tablet,id=tablet,bus=ehci.0,port=1' \
  -device 'vfio-pci,sysfsdev=/sys/bus/mdev/devices/00000000-0000-0000-0000-000000000113,id=hostpci0,bus=pcie.0,addr=0x02,display=on,x-igd-opregion=on' \
  -chardev 'socket,path=/var/run/qemu-server/113.qga,server=on,wait=off,id=qga0' \
  -device 'virtio-serial,id=qga0,bus=pci.0,addr=0x8' \
  -device 'virtserialport,chardev=qga0,name=org.qemu.guest_agent.0' \
  -iscsi 'initiator-name=iqn.1993-08.org.debian:01:8bf89e458fa' \
  -device 'virtio-scsi-pci,id=virtioscsi0,bus=pci.3,addr=0x1' \
  -drive 'file=/var/lib/vz/images/113/vm-113-disk-1.qcow2,if=none,id=drive-scsi0,format=qcow2,cache=none,aio=io_uring,detect-zeroes=on' \
  -device 'scsi-hd,bus=virtioscsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,rotation_rate=1,bootindex=100' \
  -netdev 'type=tap,id=net0,ifname=tap113i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' \
  -device 'virtio-net-pci,mac=BC:**:**:**:**:D0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256' \
  -rtc 'driftfix=slew,base=localtime' \
  -machine 'hpet=off,type=pc-q35-8.1+pve0' \
  -global 'kvm-pit.lost_tick_policy=discard' \

Using SPICE:
Bash:
/usr/bin/kvm \
  -id 113 \
  -name 'Win11-EN-GVT-Fix,debug-threads=on' \
  -no-shutdown \
  -chardev 'socket,id=qmp,path=/var/run/qemu-server/113.qmp,server=on,wait=off' \
  -mon 'chardev=qmp,mode=control' \
  -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
  -mon 'chardev=qmp-event,mode=control' \
  -pidfile /var/run/qemu-server/113.pid \
  -daemonize \
  -smbios 'type=1,uuid=6f597e40-2f15-4505-99a3-89543fa99a06' \
  -drive 'if=pflash,unit=0,format=raw,readonly=on,file=/usr/share/pve-edk2-firmware/OVMF_CODE_4M.secboot.fd' \
  -drive 'if=pflash,unit=1,id=drive-efidisk0,format=qcow2,file=/var/lib/vz/images/113/vm-113-disk-0.qcow2' \
  -smp '4,sockets=1,cores=4,maxcpus=4' \
  -nodefaults \
  -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
  -vga none \
  -nographic \
  -display 'egl-headless,gl=core,rendernode=/dev/dri/renderD128' \
  -vnc 'unix:/var/run/qemu-server/113.vnc,password=on' \
  -cpu 'host,hv_ipi,hv_relaxed,hv_reset,hv_runtime,hv_spinlocks=0x1fff,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vendor_id=proxmox,hv_vpindex,kvm=off,+kvm_pv_eoi,+kvm_pv_unhalt' \
  -m 8192 \
  -readconfig /usr/share/qemu-server/pve-q35-4.0.cfg \
  -device 'vmgenid,guid=ebe3f347-c1b2-4a5b-b147-d5651dd52eb5' \
  -device 'vfio-pci,sysfsdev=/sys/bus/mdev/devices/00000000-0000-0000-0000-000000000113,id=hostpci0,bus=pcie.0,addr=0x02,display=on,x-igd-opregion=on' \
  -chardev 'socket,path=/var/run/qemu-server/113.qga,server=on,wait=off,id=qga0' \
  -device 'virtio-serial,id=qga0,bus=pci.0,addr=0x8' \
  -device 'virtserialport,chardev=qga0,name=org.qemu.guest_agent.0' \
  -device 'virtio-serial,id=spice,bus=pci.0,addr=0x9' \
  -chardev 'spicevmc,id=vdagent,name=vdagent' \
  -device 'virtserialport,chardev=vdagent,name=com.redhat.spice.0' \
  -spice 'tls-port=61000,addr=127.0.0.1,tls-ciphers=HIGH,seamless-migration=on' \
  -iscsi 'initiator-name=iqn.1993-08.org.debian:01:8bf89e458fa' \
  -device 'virtio-scsi-pci,id=virtioscsi0,bus=pci.3,addr=0x1' \
  -drive 'file=/var/lib/vz/images/113/vm-113-disk-1.qcow2,if=none,id=drive-scsi0,format=qcow2,cache=none,aio=io_uring,detect-zeroes=on' \
  -device 'scsi-hd,bus=virtioscsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,rotation_rate=1,bootindex=100' \
  -netdev 'type=tap,id=net0,ifname=tap113i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' \
  -device 'virtio-net-pci,mac=BC:**:**:**:**:D0,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256' \
  -rtc 'driftfix=slew,base=localtime' \
  -machine 'hpet=off,type=pc-q35-8.1+pve0' \
  -global 'kvm-pit.lost_tick_policy=discard' \
 
Last edited: