Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

DearthnVader

Suspended
Original poster
Dec 17, 2015
2,207
6,392
Red Springs, NC
Doesn't seem to be a whole lot of info on PCI Passthrough on a Mac Pro, and maybe some false or misleading info about VT-d.

Anyway, the Mac Pro 3,1 has the 5400 chipset and Intel lists it as supporting VT-d, however there are no CPU's supported by the MP3,1 that list support for VT-d, but this doesn't matter, because VT-d is a feature of the chipset, not the CPU.

Further Apple enabled MMUIO( VT-d / Intel Virtualization Technology for Directed I/O / AKA PCI Passthrough ) in the Mac Pro3,1 EFI and CSM.

So what does this mean, it means you can install Linux and Qemu and use PCI Passthrough to pass physical PCI devices from your host to your guest. I also assume this will work of the MP4,1 and 5,1, maybe even the MP6,1, tho it would be of a little less use on a system without PCI-E slots, per say. Yet the 6,1 could maybe pass one of it's mostly usleess GPU's to a virtual machine.

Also @dosdude1 my findings are the same as yours, that the AMD Drivers in Sierra and HS use SSE4.2, and I was under some confusion as to why it worked on my virtual machine with a RX580 and qemu -cpu Penryn, but it seems to be enabling the feature in my launch options.

Code:
MY_OPTIONS="+aes,+xsave,+avx,+xsaveopt,avx2,+smep"

One of these must pass SSE4.2 from the host to the guest, if the host CPU supports it. Here is what I get with these options on my Xeon X5482:

Code:
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.aes [bit 25]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.xsave [bit 26]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.avx [bit 28]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.07H:EBX.avx2 [bit 5]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.07H:EBX.smep [bit 7]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000007H:EDX.invtsc [bit 8]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 0]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 1]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 2]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.aes [bit 25]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.xsave [bit 26]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.avx [bit 28]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.07H:EBX.avx2 [bit 5]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.07H:EBX.smep [bit 7]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000007H:EDX.invtsc [bit 8]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 0]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 1]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 2]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.aes [bit 25]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.xsave [bit 26]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.avx [bit 28]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.07H:EBX.avx2 [bit 5]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.07H:EBX.smep [bit 7]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000007H:EDX.invtsc [bit 8]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 0]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 1]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 2]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.aes [bit 25]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.xsave [bit 26]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.avx [bit 28]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.07H:EBX.avx2 [bit 5]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.07H:EBX.smep [bit 7]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000007H:EDX.invtsc [bit 8]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX.xsaveopt [bit 0]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 0]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 1]
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 2]

And as we would expect, using PCI Passthrough to pass a RX580 to a HS virtual machine is the same result as trying to boot HS on the RX580 natively on the MP3,1. No GUI, because we have no SSE4.2.
 
Not exactly related with PCI Passthrough, but @DearthnVader do you have any documentation on installing macOS on QEMU macOS hosts? I've searched and found little information.
 
  • Like
Reactions: handheldgames
Not exactly related with PCI Passthrough, but @DearthnVader do you have any documentation on installing macOS on QEMU macOS hosts? I've searched and found little information.

It can be done, however you lack KVM CPU accretion and no MMUIO/PCI Passthrough/VFIO-PCI.

If your target guest is other than x86 it's worthwhile, otherwise it just better the host be linux.

The easiest way would be to use brew, you know, brew install qemu.

Otherwise, dig in a little and install all the dependencies for qemu and build it just like you would on linux( recommended ). Don't forget libUSB.

https://wiki.qemu.org/index.php/Hosts/Mac
[doublepost=1530531590][/doublepost]You know @dosdude1, it seems it's not SSE4.2, but one of these other instructions I'm passing in MY_Options.

Code:
MY_OPTIONS="+aes,+xsave,+avx,+xsaveopt,avx2,+smep"

VS.

Code:
MY_OPTIONS="+aes,+xsave,+avx,+xsaveopt,avx2,+smep,+sse4.2"

I'll have to do some testing.
 
  • Like
Reactions: tsialex
You could try removing one at the time and see where it fails. Interesting, yet annoying, that High Sierra requires SSE4.2 but I guess it makes it easy to deprecate older hardware.

I'm currently running Windows 10 on my Mac Pro 3.1 and I am not loving it. I'm thinking about trading my VEGA FE for an Titan XP.
 
You could try removing one at the time and see where it fails. Interesting, yet annoying, that High Sierra requires SSE4.2 but I guess it makes it easy to deprecate older hardware.

I'm currently running Windows 10 on my Mac Pro 3.1 and I am not loving it. I'm thinking about trading my VEGA FE for an Titan XP.
That's the plan, just remove them one by one until my Ryzen 7 host fails to get video on the High Sierra guest with the RX580.

Maybe a day or three before I get around to it, but we may get a more clear picture of what CPU feature is really needed, and maybe we can get KVM to emulate the instruction.
 
  • Like
Reactions: handheldgames
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.