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

kknd0

New Member
Dec 29, 2023
2
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:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!