Optimus Said No: A Laptop GPU Passthrough Tragedy in Proxmox
The first I was optimistic and blame my ignorance (still is today) why it failed. The second time, I did my research but still did anyway it to satisfy my curiosity.
This is the last time, please just buy a desktop GPU and save yourself from headache.
Table of Contents
Setup
I built a Proxmox Node using an old Laptop-Thinkpad P51.
1 .://:` `://:. root@marilag
2 `hMMMMMMd/ /dMMMMMMh` ------------
3 `sMMMMMMMd: :mMMMMMMMs` OS: Proxmox VE 9.1.1 x86_64
4`-/+oo+/:`.yMMMMMMMh- -hMMMMMMMy.`:/+oo+/-` Host: 20HJS16P08 (ThinkPad P51)
5`:oooooooo/`-hMMMMMMMyyMMMMMMMh-`/oooooooo:` Kernel: Linux 6.17.2-1-pve
6 `/oooooooo:`:mMMMMMMMMMMMMm:`:oooooooo/` Uptime: 3 hours, 43 mins
7 ./ooooooo+- +NMMMMMMMMN+ -+ooooooo/. Packages: 891 (dpkg)
8 .+ooooooo+-`oNMMMMNo`-+ooooooo+. Shell: bash 5.2.37
9 -+ooooooo/.`sMMs`./ooooooo+- Display (LGD0538): 1920x1080 @ 60 Hz in 15" [Built-in]
10 :oooooooo/`..`/oooooooo: Terminal: /dev/pts/1
11 :oooooooo/`..`/oooooooo: CPU: Intel(R) Core(TM) i7-7820HQ (8) @ 3.90 GHz
12 -+ooooooo/.`sMMs`./ooooooo+- GPU 1: NVIDIA Quadro M1200 Mobile [Discrete]
13 .+ooooooo+-`oNMMMMNo`-+ooooooo+. GPU 2: Intel HD Graphics 630 @ 1.10 GHz [Integrated]
14 ./ooooooo+- +NMMMMMMMMN+ -+ooooooo/. Memory: 18.23 GiB / 46.77 GiB (39%)
15 `/oooooooo:`:mMMMMMMMMMMMMm:`:oooooooo/` Swap: 0 B / 8.00 GiB (0%)
16`:oooooooo/`-hMMMMMMMyyMMMMMMMh-`/oooooooo:` Disk (/): 5.52 GiB / 67.73 GiB (8%) - ext4
17`-/+oo+/:`.yMMMMMMMh- -hMMMMMMMy.`:/+oo+/-` Disk (/mnt/pve/ssd-dir): 22.56 GiB / 109.48 GiB (21%) - ext4
18 `sMMMMMMMm: :dMMMMMMMs` Local IP (vmbr0): 192.168.69.69/24
19 `hMMMMMMd/ /dMMMMMMh` Battery (00NY493): 66% [AC Connected]
20 `://:` `://:` Locale: en_US.UTF-8
The plan is to passthrough NVIDIA Quadro M1200 GPU to an Arch Linux VM and run LLM and Jellyfin.
Config
These are the config. I may have used different setup why testing configuration I find in forums. This is the final version where i conclude that it is madness to continue.
/etc/pve/qemu-server/204.conf
1#arch nvidia
2agent: 1
3balloon: 0
4bios: ovmf
5boot: c
6bootdisk: scsi0
7cicustom:
8ciupgrade: 1
9cores: 4
10cpu: host
11efidisk0: nvme-lvm:vm-204-disk-1,efitype=4m,size=4M
12hostpci0: 0000:01:00,pcie=1
13hotplug: network,disk,usb
14ide1: nvme-lvm:vm-204-cloudinit,media=cdrom,size=4M
15ipconfig0: ip=192.168.69.69/24,gw=192.168.69.1
16kvm: 1
17machine: q35
18memory: 16384
19meta: creation-qemu=10.1.2,ctime=1777956272
20name: mrlgarch3dnvidia
21nameserver: 1.1.1.1 8.8.8.8
22net0: virtio=BC:24:11:74:61:CC,bridge=vmbr0,firewall=1
/etc/default/grub
1GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
/etc/modprobe.d/blacklist.conf
1blacklist nouveau
2blacklist nvidia
/etc/modules
1vifio
2vifio_iommu_type1
3vifio_pci
4vifio_virqfd
The Bullshit
Seem’s okay at first, was able to install driver and the VM can detect the GPU.
101:00.0 3D controller: NVIDIA Corporation GM107GLM [Quadro M1200 Mobile] (rev a2)
2 Physical Slot: 0
3 Flags: bus master, fast devsel, latency 0, IRQ 16
4 Memory at 80000000 (32-bit, non-prefetchable) [size=16M]
5 Memory at 7000000000 (64-bit, prefetchable) [size=256M]
6 Memory at 7010000000 (64-bit, prefetchable) [size=32M]
7 I/O ports at 7000 [size=128]
8 Expansion ROM at 81080000 [disabled] [size=512K]
9 Capabilities: [60] Power Management version 3
10 Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
11 Capabilities: [78] Express Endpoint, IntMsgNum 0
12 Capabilities: [100] Virtual Channel
13 Capabilities: [250] Latency Tolerance Reporting
14 Capabilities: [128] Power Budgeting <?>
15 Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
16 Kernel driver in use: nvidia
17 Kernel modules: nouveau, nvidia_drm, nvidia
18
1901:00.1 Audio device: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] (rev a1) (prog-if 00 [HDA compatible])
20 Physical Slot: 0
21 Flags: bus master, fast devsel, latency 0, IRQ 17
22 Memory at 81000000 (32-bit, non-prefetchable) [size=16K]
23 Capabilities: [60] Power Management version 3
24 Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
25 Capabilities: [78] Express Endpoint, IntMsgNum 0
26 Kernel driver in use: snd_hda_intel
27 Kernel modules: snd_hda_intel
The bullshit that persist.
- NVML sees zero GPUs.
- The driver cannot successfully load or execute the GPU firmware (VBIOS), so RM initialization aborts.
1[root@mrlgarch3dnvidia ~]# nvidia-smi
2No devices were found
1[root@mrlgarch3dnvidia ~]# dmesg | grep -i nvrm | tail -50
2[ 6.290618] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 580.159.03 Fri Apr 24 06:16:47 UTC 2026
3[ 29.908481] NVRM: GPU 0000:01:00.0: Failed to copy vbios to system memory.
4[ 29.908635] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x30:0xffff:1129)
5[ 29.908640] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
6[ 2857.191740] NVRM: GPU 0000:01:00.0: Failed to copy vbios to system memory.
7[ 2857.191897] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x30:0xffff:1129)
8[ 2857.191905] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0
Conclusion
Just buy a desktop GPU, don’t buy NVIDIA if you are using Linux as your main setup. Even in desktop environment NVIDIA Optimus is just a pain in the butt to setup.
Check this blog for more detail explanation.