# 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)