3.1 KiB
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"andls /sys/kernel/iommu_groups/.
General OEM board checks before GPU passthrough
# 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)