Quite a few changes with vGPU software on Kernel 6.8. The feature is called "Vendor-Specific VFIO Framework".
Note you will need 550.90.05 for this to work which you can download from nVIDIA. Things like mixed size vGPU (you can now have different memory allocations on the same GPU) and live migration on KVM are now a feature (haven't tested that feature yet, more to come).
Note: current versions of the 535 and perhaps other branches may now work as well (which you may need if you are using Pascal-era (2014) hardware). Review "Vendor-Specific VFIO" under KVM portion of nVIDIA documentation.
Do NOT use the Mediated Devices or PCI device through the GUI, once you do that, you will get a big kernel error in dmesg in relation to vfio and you won't be able to start the VM with the GPU anymore.
This may now be fixed as well in updated kernels.
Solution:
Create a vGPU allocation according to the documentation (https://docs.nvidia.com/vgpu/latest/pdf/grid-vgpu-user-guide.pdf#page71 - PDF page 71, human page 57)
Where the domain bus etc. is the PCI slot your GPU is plugged into. Note that this can change whenever any hardware is added or removed, depending on your system. You can find it in
And look under Bus-Id
Add this to /etc/pve/qemu-server/<VMID>.conf
Where 0000:0d:01.1 is the domain:bus:vf-slot.v-function you added the GPU type to. UUID is the uuid you can find in smbios1 (if it's set, depends on when your config was made, in 6 and 7 it doesn't seem to always have been there). If it's not set, set one through the SMBIOS option in the GUI (just randomly generate one)
Note: current versions of the 535 and perhaps other branches may now work as well (which you may need if you are using Pascal-era (2014) hardware). Review "Vendor-Specific VFIO" under KVM portion of nVIDIA documentation.
Do NOT use the Mediated Devices or PCI device through the GUI, once you do that, you will get a big kernel error in dmesg in relation to vfio and you won't be able to start the VM with the GPU anymore.
This may now be fixed as well in updated kernels.
Solution:
Create a vGPU allocation according to the documentation (https://docs.nvidia.com/vgpu/latest/pdf/grid-vgpu-user-guide.pdf#page71 - PDF page 71, human page 57)
Bash:
cd /sys/bus/pci/devices/domain\:bus\:vf-slot.v-function/nvidia
cat creatable_vgpu_types
echo <TYPE> > current_vgpu_type
Where the domain bus etc. is the PCI slot your GPU is plugged into. Note that this can change whenever any hardware is added or removed, depending on your system. You can find it in
Bash:
nvidia-smi
Code:
| 0 NVIDIA L40S On | 00000000:0D:00.0 Off | 0 |
| N/A 29C P8 39W / 350W | 44545MiB / 46068MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA L40S On | 00000000:B5:00.0 Off | 0 |
| N/A 32C P8 38W / 350W | 0MiB / 46068MiB | 0% Default |
| | | N/A |
Code:
args: -device vfio-pci,sysfsdev=/sys/bus/pci/devices/0000:0d:01.1 -uuid aabababa-aabb-aabb-aabb-aabbccddeeff
Last edited: