An RTX 5090 eGPU was connected to an M4 MacBook Air via Thunderbolt and passed through to a Linux ARM64 VM to run games and LLM inference.
Key Takeaways
macOS ships no NVIDIA or AMD GPU drivers for Apple Silicon, so the only viable path is PCIe passthrough into a Linux VM running under macOS Hypervisor.framework.
Mapping PCI BARs directly into the VM crashed the host kernel; the fix was stripping HV_MEMORY_EXEC from hv_vm_map() flags, with a residual ~10x BAR write penalty due to nGnRnE memory type.
Apple’s DART IOMMU enforces a ~1.5GB DMA mapping limit and ~64k mapping cap, blocking straightforward GPU passthrough; a custom QEMU virtual PCI device (apple-dma-pci) with a companion Linux kernel driver works around this by mapping only live DMA buffers.
tinygrad’s open-source macOS eGPU driver exists but runs inference ~10x slower than native Metal on M4 Pro and cannot be used for general display or gaming workloads.
LLM prompt processing (prefill) speed on Mac is a known bottleneck; the RTX 5090 passthrough setup meaningfully improves it compared to Apple Silicon alone.
Hacker News Comment Review
Commenters confirmed Apple internally explored VM GPU passthrough for the Mac Pro (which has internal PCIe slots) but never shipped it, despite requests from engineering teams.
There is consensus that the practical value here is less about gaming and more about LLM prefill throughput, where Apple Silicon lags badly on long contexts regardless of unified memory capacity.
Discussion noted that some games like DOOM 2016 are unplayable on macOS even with CrossOver due to dropped OpenGL support, making this eGPU-plus-Linux-VM path the only option on Mac hardware for certain titles.
Notable Comments
@matthewfcarlson: Former Apple Silicon Mac Pro engineer confirms he lobbied internally for VM GPU passthrough support and was never taken up on it.
@geerlingguy: Notes this is far beyond the tinygrad approach and calls out the 1.5GB DART window as the key Apple-side blocker worth fixing.