6 ms·
I have been bothering the VM team for years for VM GPU pass through. I worked on the Apple Silicon Mac Pro and it would have made way more sense if you could ru
by matthewfcarlson 5mo ago
I have been bothering the VM team for years for VM GPU pass through. I worked on the Apple Silicon Mac Pro and it would have made way more sense if you could run a linux VM and pass through the GPU that goes inside the case!
Sadly, as you can tell, they have not taken me up on my requests. Awesome that other people got it working!
- crdrost 5mo agoIt feels like half the problem in this blog post is dealing with memory access issues induced by QEMU and the VM boundary... it's probably something dumb I'm missing, but if you boot up Ubuntu in Docker, wouldn't the NVIDIA drivers still load? And then you wouldn't have to fight Apple about the memory management because OSX would still own the memory?
- jmalicki 5mo agoThe driver wants to own the memory is the problem.
- swiftcoder 5mo ago> but if you boot up Ubuntu in Docker, wouldn't the NVIDIA drivers still load? Even if the drivers loaded, they can't talk to the GPU from within docker (unless one implements PCI passthrough). MacOS owns the PCI bus in this scenario.
- smw 5mo agodocker on macos runs in a linux vm
- brcmthrowaway 5mo agoI still believe the lack of NVIDIA GPU support in the Mac Pro will go down as one of the greatest missed opportunities in tech. Anyway, the Mac Pro is dead now. There's only so much sales audio and video professionals can provide.
- Aurornis 5mo ago> I still believe the lack of NVIDIA GPU support in the Mac Pro will go down as one of the greatest missed opportunities in tech. I don’t know about that. Apple supported some full size GPUs in past product lines and the number of users was very small. Granted, LLMs change that demand but the audience for Mac Pro buyers who would use a full-size GPU that is impossible to obtain is almost nothing compared to their laptop sales.
- bigyabai 5mo agoThe audience for Mac Pro buyers is almost nothing, full stop. It failed to find a niche, and now Apple is getting rid of it: https://www.macrumors.com/2026/03/26/apple-discontinues-mac-pro/ https://www.macrumors.com/2026/03/26/apple-discontinues-mac-... Part of the reason the new Mac Pro failed to find an audience can definitely be blamed on macOS' hostility to third party hardware. Who knows what Apple would be worth if they beat Nvidia's Grace CPU to the datacenter market. It was certainly their opportunity.
- brcmthrowaway 5mo agoTrue, they could do any number of things. But a datacenter play would appear quite random to investors and their core audience. Broadcom + Nvidia however...
- trollbridge 5mo agoApple seems to be content to sell shovels in the AI gold rush. Admittedly… what’s on my desk? A MacBook M4 Air, a Mac Studio, and there’s an x86 iMac in the corner. What goes in the travel bag? A MacBook Pro or the Air. Every time I look at buying something else the math doesn’t add up. The 5090 sits in a commodity PC chassis. It’s not like I need a model running on my own computer.
- pjmlp 5mo agoYes, because they already moved on to workstations powered by either Windows or Red-Hat Linux/Ubuntu. The only ones left were people like John Siracusa that still hoped to the very last minute, that Apple would change their mind.
- m132 5mo agoIt looks like the pass through part here was implemented using standard DriverKit interfaces, if I'm not mistaken. That is, the PCIe BAR can already be mapped from the user-space, without any extra modifications to macOS. It's just a matter of VMMs, such as QEMU, adopting this interface in addition to Linux VFIO and the like (unless you're talking about Virtualization.framework, which is kind of a VMM of its own). What exactly do you feel macOS is missing?
- anp 5mo agoI’m not very familiar with the specifics of pass through but IIUC only being able to map 1.5gb of active DMA buffers at a time is pretty limiting.
- mikae1 5mo ago>> This project requires a special entitlement from Apple. I’ve requested it, and heard they may be open to granting it, but I have not yet heard back, and I’m told that the wait time could be months. > I have been bothering the VM team for years for VM GPU pass through. Good luck. I'm sure they're keen on giving people access to this so that people can spend their money on NVIDIA GPUs instead of buying more expensive Macs. :) Would of course be awesome, but I'd be very surprised if it happened.
- codebje 5mo agoThere isn't a more expensive Mac option to buy if what you're after is a gaming GPU. It's more likely that the VM team sees this as a very low benefit ticket to pursue given the tiny segment of Mac gamers hoping to improve their options with a Linux VM for gaming. (Meanwhile, I'm recompiling Wine to see if I can patch it to address an issue that was hotfixed in Proton two weeks ago but isn't in a CrossOver build yet, so yeah, there's maybe some arguments to be made here that I'd be a potential beneficiary. If I weren't too cheap to spring for an eGPU in today's market, anyway.)
- m132 5mo agoThe entitlement in question is the standard `com.apple.developer.driverkit.transport.pci` [0], required for anything that touches the PCIe bus [1]. Apple is generally restrictive with how much third-party applications can do on machines with SIP/"full security", so I'm not exactly surprised. It's not an Apple-private entitlement, however. The VFIO-style driver made by the author of this also appears generic enough to support all kinds of PCIe, not just GPUs. Apple might find a way to weasel out of this ("hey, this is for hardware companies and you don't seem to be affiliated with one", "your driver requests too broad access", etc.) if there really is a conflict of interest, but so far, there's a chance it will just get rubber-stamped. I can see them rejecting it for legitimate reasons, though, at least as far as "legitimate" with Apple goes. This driver is essentially a thin layer over PCIDriverKit, exposing all functionality that's supposed to be behind the entitlement to arbitrary applications, in similar fashion to WinRing0. They probably didn't come up with all this bureaucracy only to sign something like that in the end. We'll see what happens. [0] https://github.com/scottjg/qemu-vfio-apple/blob/84ecdcf5db6ba66c05135965a923352a478cafa3/contrib/apple-vfio/VFIOUserPCIDriver/VFIOUserPCIDriver.entitlements https://github.com/scottjg/qemu-vfio-apple/blob/84ecdcf5db6b... [1] https://developer.apple.com/documentation/pcidriverkit/creating-custom-pcie-drivers-for-thunderbolt-devices#Request-the-Entitlements-Required-to-Run-Your-Driver https://developer.apple.com/documentation/pcidriverkit/creat...
- caycep 5mo agoWhat are the chances there will be another Mac Pro in the future? Will Apple ever make a computer that makes Siracusa happy? (and do you have the "Believe" shirt?)
- kahrl 5mo ago[flagged]
- pjmlp 5mo agoNever, a couple of years ago Apple gave up on the server market, that is why having Swift on Linux is so relevant for app developers. Now they gave up on the workstation market that really enjoys their slots for all myriad of cards. Having a thunderbolt cable salad is only for those that miss external extensions from 8 and 16 bit home computer days. Which is clearly what Apple is nowadays focused, if you look back at the vertical integrations before the PC clones market took off. So now if you really need a workstation, it is either Windows, or one of those systems sold with Red-Hat Enterprise/Ubuntu from IBM, Dell , HP.
- hedora 5mo agoIf you want a workstation, you are probably better off building it yourself, or having your local computer store do it. The primary exceptions are AMD strix halos or the nvidia dgx spark. I haven’t seen a non-laughable workstation config from the big vendors since the dot com bubble. Presumably they exist, I guess?
- scottjg 5mo agotwo semi interesting things to note around this: 1. Virtualization.framework seems to support some form of GPU passthrough from the host (granted, not eGPU - it's for the integrated GPU). I think the primary use case is having macOS guests get acceleration, while still sharing GPU time with the host. There is also a patch that recently hit QEMU mainline that supports using the "venus server" with virtio-gpu to support a similar functionality for Linux guests under Hypervisor.framework. 2. Apple internally has some kind of PCI Passthrough support available in Virtualization.framework. It seems like the code is shipped to customers in the framework, but it relies on some kind of kext or kernel component that isn't shipped in retail macOS. I can't say if that's intended to ever be released to customers, but clearly someone at Apple has thought about this the feature.
- m132 5mo agoI experimented with booting Arm macOS 14-26 in QEMU a while back, building on the work of Alexander Graf for macOS 12-13, and reverse-engineered substantial parts of Hypervisor.framework, the in-kernel hypervisor, and a bit of Virtualization.framework. Got newer versions of Sequoia to boot past the log in screen, with GPU acceleration too. Unless there's another method I missed, the internal GPU "pass through" of Virtualization.framework you're thinking of might actually just be paravirualization, at least that's what the name suggests. It's implemented in the public ParavirtualizedGraphics framework [0], albeit for PG on Arm macOS, the relevant interfaces are private [1]. I haven't looked that deep into it per se, but, fixing the bugs around it, I've run into a few clues suggesting that it's just a command stream + shared memory being passed around. It also uses its own generic driver on the guest side. Great job, by the way! Love how authors of pieces like this casually come here to comment :) [0] https://developer.apple.com/documentation/paravirtualizedgraphics https://developer.apple.com/documentation/paravirtualizedgra... [1] https://github.com/qemu/qemu/blob/edcc429e9e41a8e0e415dcdab6aa52ad17ef8889/hw/display/apple-gfx-mmio.m https://github.com/qemu/qemu/blob/edcc429e9e41a8e0e415dcdab6...
- scottjg 5mo agothanks! there also appears to be a generic pci passthrough path. we were discussing it on the qemu-devel list: https://lore.kernel.org/qemu-devel/C35B5E97-73F2-4A60-951B-B064A882BD1E@unpredictable.fr/ https://lore.kernel.org/qemu-devel/C35B5E97-73F2-4A60-951B-B...
- SilentM68 5mo agoIn your view why have they refused to implement a "Linux VM and pass through the GPU that goes inside the case?"