# 🖥️ GPU Passthrough auf Proxmox (VFIO)

Diese Anleitung zeigt, wie du eine **GPU per VFIO** an eine VM in **Proxmox VE** durchreichst.

> ⚠️ Hinweis: Stelle sicher, dass **IOMMU** im BIOS/UEFI aktiviert ist (Intel VT-d / AMD-Vi).

---

## 1) GRUB anpassen (IOMMU aktivieren)

Datei bearbeiten:
```bash
sudo nano /etc/default/grub
```

Die Zeile `GRUB_CMDLINE_LINUX_DEFAULT="quiet"` ersetzen durch:

+++ Intel
```bash
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
```
+++ AMD
```bash
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
```
+++

Grub aktualisieren:
```bash
sudo update-grub
```

---

## 2) VFIO-Module laden

Datei öffnen:
```bash
sudo nano /etc/modules
```

Folgende Zeilen hinzufügen:
```text
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
```

---

## 3) IOMMU Interrupt-Remapping & KVM-Optionen

```bash
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" | sudo tee /etc/modprobe.d/iommu_unsafe_interrupts.conf
echo "options kvm ignore_msrs=1" | sudo tee /etc/modprobe.d/kvm.conf
```

---

## 4) Treiber blacklisten (Host soll GPU nicht binden)

```bash
echo "blacklist radeon"  | sudo tee -a /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" | sudo tee -a /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia"  | sudo tee -a /etc/modprobe.d/blacklist.conf
```

---

## 5) Geräte-IDs ermitteln und an VFIO binden

Gesamte PCI-Liste anzeigen:
```bash
lspci -v
```

### a) Slot der GPU notieren (z. B. `01:00.0` und ggf. `01:00.1` für Audio).
Detailansicht mit IDs:
```bash
lspci -n -s 01:00
```
Beispielausgabe (NVIDIA):
```
01:00.0 0300: 10de:1b81
01:00.1 0403: 10de:10f0
```

### b) IDs in VFIO-Config eintragen
Ersetze die IDs in der folgenden Zeile passend zu deiner Karte:
```bash
echo "options vfio-pci ids=10de:1b81,10de:10f0 disable_vga=1" | sudo tee /etc/modprobe.d/vfio.conf
```

---

## 6) Initramfs aktualisieren & neu starten

```bash
sudo update-initramfs -u
sudo reboot
```

---

## 7) Nach dem Neustart prüfen

```bash
lspci -k -s 01:00
```
Die GPU sollte nun mit **vfio-pci** gebunden sein.

---

## 8) VM-Konfiguration (Kurz)

- In der VM **„Hardware → PCI-Gerät hinzufügen“**, den GPU‑Slot (und Audio‑Funktion) auswählen
- **„Alle Funktionen“** anhaken (falls verfügbar)
- **„Primäre GPU“** nur setzen, wenn die VM eine eigene Ausgabe braucht
- Für Windows‑Gäste: **q35**‑Maschine, **UEFI (OVMF)**, und **VirtIO‑Treiber** bereitstellen

---

## Tipps

- Falls Gerätegruppen (IOMMU Groups) nicht sauber getrennt sind, kann ggf. **ACS override** notwendig sein.
- Für NVIDIA Consumer‑GPUs unter Windows ggf. **Hyper-V Enlightenments** deaktivieren (in VM‑Config `args:`) oder Workarounds nutzen.
