SR-IOV

https://wiki.archlinux.org/title/intel_graphics

grep '' /sys/kernel/debug/dri/0/gt/uc/*uc_info
dmesg | grep guc

Kubernetes cluster : https://github.com/intel/kubevirt-gfx-sriov

Ubuntu 22.04 LTS host: https://www.intel.com/content/www/us/en/developer/articles/reference-implementation/graphics-sr-iov-enablement-toolkit.html

https://github.com/strongtz/i915-sriov-dkms | PVE - for linux 6.1 ~ linux 6.3: https://github.com/strongtz/i915-sriov-dkms/blob/master/README.md

VirGL

GPU assignment

The state of GPU assignment in QEMU/KVM: https://www.linux-kvm.org/images/b/b3/01x09b-VFIOandYou-small.pdf

https://wiki.debian.org/VGAPassthrough

https://wiki.gentoo.org/wiki/GPU_passthrough_with_libvirt_qemu_kvm

https://pve.proxmox.com/wiki/Pci_passthrough

Error handling

  • Windows BSOD: system thread exception not handled

    echo “options kvm ignore_msrs=1” > /etc/modprobe.d/kvm.conf

  • Linux tty: Radeon kernel modesetting for r600 or later requires firmware-amd-graphics

    apt-get install firmware-amd-graphics

virtio-gpu

https://www.linux-kvm.org/images/0/09/Qemu-gfx-2016.pdf

https://github.com/qemu/qemu/blob/master/hw/display/virtio-gpu.c

ARMv8/arm-64: use virtio-gpu because the legacy VGA framebuffer is very troublesome on aarch64

https://docs.opennebula.org/5.4/deployment/open_cloud_host_setup/pci_passthrough.html#loading-vfio-driver-in-initrd

Hardware

NVIDIA Certified

http://www.nvidia.com/object/grid-certified-servers.html
GRID vGPU is a licensed feature on Tesla M6, Tesla M10, and Tesla M60.

VDI Solutions - Nvidia

http://www.nvidia.com/object/xendesktop-vgpu.html (Right bottom section: “Partner Solutions”)

## Virtualized Application Solutions (Shared GPU)
Citrix XenApp 6.5 with OpenGL Add-on and Citrix XenDesktop 7 Hosted-Shared delivery

## Virtual Desktop Solutions (Shared GPU)
XenDesktop FP1 with NVIDIA GRID™ vGPU™1
Microsoft RemoteFX in Windows Server 2012
VMware Horizon View 5.2 with vSGA2

## Virtual Remote Workstation Solutions (Dedicated GPU)
Citrix XenDesktop 5.6
Citrix XenDesktop 7 VDI delivery
VMware View 5.3 with vDGA

AMD

AMD MxGPU is the world’s first hardware-based virtualized GPU solution, is built on industry standard SR-IOV (Single-Root I/O Virtualization) technology. Supprot VMWARE & Citrix.

Intel® Graphics Virtualization Technology


https://01.org/sites/default/files/users/u16902/graphics_virtualization_update_figure_1.png
https://01.org/sites/default/files/users/u16902/graphics_virtualization_update_figure_2.png
https://01.org/sites/default/files/users/u16902/graphics_virtualization_update_figure_3.png

  • –d (Intel® GVT –d): vDGA: virtual dedicated graphics acceleration (one VM to one physical GPU)
  • –s (Intel® GVT -s): vSGA: virtual shared graphics acceleration (multiple VMs to one physical GPU)
  • –g (Intel® GVT -g): vGPU: virtual graphics processing unit (multiple VMs to one physical GPU)

Visit Intel GVT-g page for more.

Optional Firmware

https://01.org/linuxgraphics/downloads/firmware

GuC:designed to perform graphics workload scheduling on the various graphics parallel engines.
DMC: low-power idle states. It provides capability to save and restore display registers across these low-power states independently from the OS/Kernel.
HUC: offload some of the media functions from the CPU to GPU.

ls /lib/firmware/i915/ -l

Citrix

XenServer

https://docs.citrix.com/content/dam/docs/en-us/xenserver/current-release/downloads/xenserver-configuring-graphics.pdf
Graphics Virtualization is available for XenServer Enterprise Edition customers, or those who have access to XenServer through their XenApp/XenDesktop entitlement.

XenClient(IDV, discontinued)

Diagram: https://www.citrix.com/blogs/wp-content/uploads/2014/10/XenClient-Architectural-Diagram.jpg

Remote Desktop

OpenStack

https://www.openstack.org/videos/boston-2017/virtual-desktop-infrastructure-vdi-with-openstack

Apache Guacamole

https://guacamole.incubator.apache.org/
https://hub.docker.com/r/guacamole/guacamole/
HTML5 remote desktop gateway. supports VNC, RDP, and SSH.

Hardware - pikvm

https://github.com/pikvm/pikvm
Supported Raspberry Pi 2, 3, 4 and ZeroW

KVM-VDI(discontinued)

https://github.com/Seitanas/kvm-vdi/wiki
supported backends: plain QEMU-KVM and OpenStack

https://www.neblogas.lt/2016/07/18/technical-info-ovirt-agent-sso/

SPICE & QXL guest driver

https://www.spice-space.org/download.html

Streaming

ref: https://github.com/mbroemme/vdi-stream-client

Method Local Remote 3D
QXL with Spice Yes Yes No
GPU Passthrough Yes No Yes
KVM FrameRelay Yes No Yes
iGVT-g Yes No Yes (Intel only)
Virgil 3D Yes Yes Yes (Linux only)
SPICE Streaming Agent Yes Yes Yes (Linux only)
Moonlight Yes Yes Yes (Nvidia only)
Parsec Yes Yes Yes
AirGame Yes Yes Yes