# Windows VM + GPU Passthrough for Gaming

Running a Windows VM alongside Linux services on the same machine so anti-cheat games and Proton-incompatible titles work. Requires both OSes to coexist without disrupting Linux services (Docker, HA, Immich, Ollama).

## Option matrix

### Option 1: Second GPU (best)

Buy a cheap low-power GPU (GT 1030 / GTX 1050 / RX 550 — $40-80 used) for Linux. Pass the primary gaming GPU (2080 Ti) to Windows VM via VFIO.

| | Linux host | Windows VM |
|---|---|---|
| GPU | Cheap second card | Gaming GPU (full power) |
| LLM inference | Stays on Ollama ✅ | — |
| NVENC | Sunshine on Windows ✅ | Native ✅ |
| Anti-cheat games | — | Full compatibility ✅ |
| All Docker services | Unchanged ✅ | — |

Requirements: motherboard with two PCIe x16 (or x16 + x4 physical) slots. PSU headroom negligible (GT 1030 draws ~30W).

### Option 2: Single GPU passthrough (free, painful)

Pass the only GPU to Windows. Linux becomes fully headless — no GPU at all.

- All GPU workloads die on Linux: no Ollama, no Immich ML, no NVENC, no Docker GPU acceleration
- Must bind GPU to VFIO at boot (kernel cmdline: `vfio-pci.ids=10de:1e07,10de:10f7,10de:1ad6,10de:1ad7`)
- When Windows VM shuts down, GPU can be rebound to nvidia driver on Linux — but fragile; a reboot is cleaner
- LLM must run inside Windows VM or via CPU-only on Linux (impractically slow)

### Option 3: Proton-only (free, zero complexity)

No Windows VM. Accept that ~5% of games with kernel anti-cheat (Valorant, CoD, Fortnite, Destiny 2) won't work. Everything else runs through Steam Proton or Lutris on native Linux.

### Option 4: Dual boot

Reboot between Linux and Windows. Not simultaneous — all Linux services are down while gaming.

## OEM motherboard pitfalls

### HP OMEN 30L (HP 8703 board)

- **iGPU is disabled when dGPU installed.** The i7-10700K has Intel UHD Graphics 630 but it's not exposed — no video output ports routed to back panel, not visible in lspci. You cannot use iGPU for Linux host + dGPU for Windows VM passthrough on this board.
- **Only one GPU works at a time.** Option 1 (second GPU) requires verifying the board has a second physical PCIe slot and that both GPUs fit physically.
- **BIOS may lack IOMMU/VT-d settings.** HP OEM BIOSes are stripped down. VT-d/IOMMU may be enabled by default but not configurable. Check with `dmesg | grep -iE "IOMMU|DMAR"` and `ls /sys/kernel/iommu_groups/`.

### General OEM board checks before GPU passthrough

```bash
# 1. GPU IOMMU group — must be isolated (no other devices in same group)
for d in /sys/kernel/iommu_groups/*/devices/*; do
  n=${d#*/iommu_groups/*}; n=${n%%/*}
  echo "Group $n: $(lspci -nns "${d##*/}" | cut -d' ' -f2-)"
done

# 2. VFIO kernel module available
modprobe vfio-pci && echo "vfio-pci available"

# 3. Second PCIe slot existence
lspci | grep -iE "VGA|3D|display"
```

## What this does NOT cover

- Full VFIO passthrough setup (libvirt XML, vfio-pci binding, Windows virtio drivers)
- Looking Glass (low-latency VM display on Linux host)
- SR-IOV (GPU virtualization — not supported on consumer NVIDIA cards)
