Files
hermes-config/skills/gaming/game-streaming/references/windows-vm-gpu-passthrough.md
T
2026-07-12 10:17:17 -04:00

67 lines
3.1 KiB
Markdown

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