I am currently attempting a GPU passthrough to a windows VM on a host with one GPU an Nvidia GT 720. I followed a shmorgasboard of the following 4 guides.
https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/
https://www.reddit.com/r/Proxmox/comments/lcnn5w/proxmox_pcie_passthrough_in_2_minutes/
https://www.youtube.com/watch?v=S6jQx4AJlFw (this guy wanted me to use virtio drivers for internet and scsi... didn't see the point.)
https://www.youtube.com/watch?v=-34tu7uXCI8
The end game setup I am trying to achieve is from the fourth guide: I want a machine with GPU passed through, with a virtual display, able to stream games through parsec to my phone or laptop without complication. (Yes, my anemic GPU is powerful enough for the game I want to play. I just want mobile Hollow Knight, is that too much to ask?)
I enabled IOMMU. I used minimal options, because I've read thread after thread of people using overly aggressive and unhelpful options. Perhaps I need to add more, but I want to do so in an informed manner, not randomly.
I added modules (though I've read this step is unnecessary, since modules are already loaded in the current kernel?)
I blacklisted drivers. This I know is working, because the console no longer is visible through this GPU.
I added the GPU to VFIO.
I re-made the VM. Here's the config:
IOMMU groups seem good to my untrained eye
I ran "update-initramfs -u" after relevant changes, on accident multiple times due to making several edits that required the command not in sequence.
Yet after all this, I still get nvidia's classic error 43 when passed through to a windows VM. I know the passthough as a whole is working, because I can pass the gpu through to an ubuntu VM without complication (with or without ticking "primary gpu"). I know that the GPU works with windows, because I used the GPU without issue on the server bare metal running "windows to go".
How can I begin to go about diagnosing and fixing this problem? Any help at all (with corresponding explanation) is appreciated.
https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/
https://www.reddit.com/r/Proxmox/comments/lcnn5w/proxmox_pcie_passthrough_in_2_minutes/
https://www.youtube.com/watch?v=S6jQx4AJlFw (this guy wanted me to use virtio drivers for internet and scsi... didn't see the point.)
https://www.youtube.com/watch?v=-34tu7uXCI8
The end game setup I am trying to achieve is from the fourth guide: I want a machine with GPU passed through, with a virtual display, able to stream games through parsec to my phone or laptop without complication. (Yes, my anemic GPU is powerful enough for the game I want to play. I just want mobile Hollow Knight, is that too much to ask?)
I enabled IOMMU. I used minimal options, because I've read thread after thread of people using overly aggressive and unhelpful options. Perhaps I need to add more, but I want to do so in an informed manner, not randomly.
Code:
root@myserver2:~# cat /etc/kernel/cmdline
root=ZFS=rpool/ROOT/pve-1 boot=zfs quiet intel_iommu=on iommu=pt
I added modules (though I've read this step is unnecessary, since modules are already loaded in the current kernel?)
Bash:
root@myserver2:~# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
I blacklisted drivers. This I know is working, because the console no longer is visible through this GPU.
Code:
root@myserver2:~# cat /etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist nvidia
I added the GPU to VFIO.
Code:
root@myserver2:~# cat /etc/modprobe.d/vfio.conf
options vfio-pci ids=10de:1288,10de:0e0f disable_vga=1
I re-made the VM. Here's the config:
Code:
root@myserver2:~# cat /etc/pve/qemu-server/105.conf
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
balloon: 0
bios: ovmf
boot: order=ide2;ide0
cores: 2
cpu: host,hidden=1,flags=+pcid
efidisk0: local:105/vm-105-disk-0.qcow2,efitype=4m,pre-enrolled-keys=1,size=528K
hostpci0: 0000:03:00,pcie=1
ide0: local:105/vm-105-disk-1.qcow2,size=256G
ide2: local:iso/Windows.iso,media=cdrom,size=4671872K
machine: pc-q35-7.1
memory: 4096
meta: creation-qemu=7.1.0,ctime=1678060944
name: WindowsGT2
net0: e1000=12:A9:00:AE:CB:4C,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsihw: virtio-scsi-single
smbios1: uuid=97d379bc-b602-4ab2-ba8d-89328a1d7b05
sockets: 1
vmgenid: 00756c69-770c-437d-b2e9-63f1955ba8d4
IOMMU groups seem good to my untrained eye
I ran "update-initramfs -u" after relevant changes, on accident multiple times due to making several edits that required the command not in sequence.
Yet after all this, I still get nvidia's classic error 43 when passed through to a windows VM. I know the passthough as a whole is working, because I can pass the gpu through to an ubuntu VM without complication (with or without ticking "primary gpu"). I know that the GPU works with windows, because I used the GPU without issue on the server bare metal running "windows to go".
How can I begin to go about diagnosing and fixing this problem? Any help at all (with corresponding explanation) is appreciated.