Boot → Proxmox loads → "Bulk Start VMs" fires instantly →
VM 104 grabs GPU → Host kernel panics → System crashes →
Reboot → repeat forever
Boot → Proxmox loads → "Bulk Start VMs" fires instantly →
VM 104 grabs GPU → Host kernel panics → System crashes →
Reboot → repeat forever
Boot → Proxmox loads → "Bulk Start VMs" fires instantly →
VM 104 grabs GPU → Host kernel panics → System crashes →
Reboot → repeat forever
systemd.mask=pve-guests.service
systemd.mask=pve-guests.service
systemd.mask=pve-guests.service
ro quiet systemd.mask=pve-guests.service
ro quiet systemd.mask=pve-guests.service
ro quiet systemd.mask=pve-guests.service
Error: Device /dev/dri/card0 ...
Error: Device /dev/dri/card0 ...
Error: Device /dev/dri/card0 ...
ls -la /dev/dri/
ls -la /dev/dri/
ls -la /dev/dri/
crw-rw---- 1 root video 226, 1 May 13 13:51 card1
crw-rw---- 1 root render 226, 128 May 13 13:51 renderD128
crw-rw---- 1 root video 226, 1 May 13 13:51 card1
crw-rw---- 1 root render 226, 128 May 13 13:51 renderD128
crw-rw---- 1 root video 226, 1 May 13 13:51 card1
crw-rw---- 1 root render 226, 128 May 13 13:51 renderD128
# Find which card corresponds to your GPU by PCI ID
ls -la /dev/dri/by-path/
# or
lspci -k | grep -A 3 VGA
# Find which card corresponds to your GPU by PCI ID
ls -la /dev/dri/by-path/
# or
lspci -k | grep -A 3 VGA
# Find which card corresponds to your GPU by PCI ID
ls -la /dev/dri/by-path/
# or
lspci -k | grep -A 3 VGA
# Check GPU device assignment on host
ls -la /dev/dri/
lspci -k | grep -A 3 -i vga # Check IOMMU groups (run as root on Proxmox host)
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*} printf 'IOMMU Group %s ' "$n" lspci -nns "${d##*/}"
done # GRUB emergency boot (type this at the end of linux line in GRUB edit)
systemd.mask=pve-guests.service # Find stable GPU device path by PCI address
ls -la /dev/dri/by-path/
# Check GPU device assignment on host
ls -la /dev/dri/
lspci -k | grep -A 3 -i vga # Check IOMMU groups (run as root on Proxmox host)
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*} printf 'IOMMU Group %s ' "$n" lspci -nns "${d##*/}"
done # GRUB emergency boot (type this at the end of linux line in GRUB edit)
systemd.mask=pve-guests.service # Find stable GPU device path by PCI address
ls -la /dev/dri/by-path/
# Check GPU device assignment on host
ls -la /dev/dri/
lspci -k | grep -A 3 -i vga # Check IOMMU groups (run as root on Proxmox host)
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*} printf 'IOMMU Group %s ' "$n" lspci -nns "${d##*/}"
done # GRUB emergency boot (type this at the end of linux line in GRUB edit)
systemd.mask=pve-guests.service # Find stable GPU device path by PCI address
ls -la /dev/dri/by-path/ - IOMMU enabled in BIOS (AMD-Vi for AMD platforms)
- amd_iommu=on iommu=pt kernel parameters in GRUB
- Machine type set to q35 (required for PCIe passthrough)
- The PCI device was added as hostpci0 in the VM's hardware config - ✅ Proxmox boots normally
- ✅ Web UI comes up
- ✅ Network is available
- ✅ Zero VMs start automatically
- ✅ Host does not crash - VM 104 → Options → "Start at boot" → No
- VM 104 → Hardware → PCI Device (hostpci0) → Remove
- VM 104 → Hardware → Machine → change from q35 back to i440fx
- Reboot normally — don't touch the GRUB menu this time - CT 204 → Resources → Device (dev1) — change /dev/dri/card0 to /dev/dri/card1
- CT 208 → Resources → Device (dev1) — same change - Using udev rules to create a stable symlink to your specific GPU by PCI ID
- Or checking ls /dev/dri/ after any BIOS/IOMMU change before starting dependent containers - ✅ Proxmox host boots cleanly and stays stable
- ✅ All LXC containers (jellyfin-arr, linkwarden) running with GPU access on card1
- ✅ k3s Kubernetes cluster (VMs 103, 104, 105) running normally
- ✅ All other services (Plex, Pi-hole, Cloudflare, Pulse, Prowlarr, Pendela) unaffected
- ⚠️ GPU passthrough into k3s-vm-worker: parked for now, to be re-approached correctly