Jump to content

ESXI 6.7/7.0 AMD GPU Passhtrough


4 posts in this topic

Recommended Posts

Hi all,

 

I'm using ESXI 7.0b (did use 6.7 to try but with no difference).

 

Right now on Catalina but I can't seem to try to get GPU (RX580) working properly.

 

I pass it through to the VM(tried with windows before with no problems) and it appeared just as pci-device with no name.

 

After that, I've applied whatevergreen + lilu kexts and it does properly recognize it under system report however that's all there is. It's listed at GFX0. See attached images.

 

No hardware acceleration. Monitor also not turning on using either DP/HDMI. 

 

Since it is being passed through to the VM, it seems that the problem is not on ESXi side but on macOS side. 

 

Has anyone has been able to pass through an AMD GPU to ESXI VM? Can anyone suggest some pointers as to where I could find some solutions to this problem?

 

Thanks! 

 

 

Screen Shot 2020-09-29 at 10.18.16 AM.png

Screen Shot 2020-09-29 at 10.18.34 AM.png

Screen Shot 2020-09-29 at 10.30.18 AM.png

Edited by kokozaurs
Link to comment
Share on other sites

  • 1 month later...

I was trying something similar.

I found out that MacOS isn't able to read the vBIOS off the GPU and hence it cannot use it. 

Further more, MacOS expects GPU to be named as GFX0 or GFX1 in ACPI tables and VMware sets it to S1F0 so MacOS doesn't like it.

 

You could try OpenCore with WhateverGreen and try to inject bios with SSDT property ATY,bin

 

https://github.com/acidanthera/WhateverGreen/blob/master/Manual/Sample.dsl#L122

Link to comment
Share on other sites

Do this.

 

Either try it via a USB or make a snapshot of your VM as it might break boot.

 

1. Use Windows GPUz to extract your vBIOS and copy it somewhere you can access in MacOS

2. Boot into MacOS

3. Goto Terminal and use the command

 

hexdump -ve '/1 "0x%02x, "' -n 65536 <PathTovBIOS>

4. Copy all the bytes printed in terminal

5. Use attached DSL file to add your vBIOS

6. Change PE60 to the PE number of your GPU from IORegistry. Compile and save as AML to Opencore ACPI.

7. Enable newly added SSDT in OpenCore config.plist and add -v in OpenCore args if you don't have it.

8. Enable SSH in your VM and try connecting to it. 

9. Reboot VM and wait for it to boot, if it stalls, try to connect via SSH

10. Once in SSH try to run the command

 

log show --predicate 'process == "kernel"' --style syslog --last boot

11. Check the logs

 

In my case before injecting vBIOS the logs had "configureDevice failed" but after vBIOS was inject it was configured and I went to the next stage

Now I am seeing "unable to get vram descriptors" error and haven't been able to go past it. You might be different as mine was a different GPU

SSDT-GPU-BIOS.dsl

Edited by shantur
Added DSL
Link to comment
Share on other sites

  • 1 year later...

I got it working with my radeon vii, using manually a VBIOS and these arguments:

pciPassthru0.opromEnabled = TRUE

pciPassthru0.filename = /vmfs/volumes/datastorehere/vmnamehere/vgaromwithoutheader.rom

 

(i your vga is pciPassthru0).

 

I beleive a proper VBIOS would start with the hex characters 55AA for a Radeon, as seen in Hexfiend. Otherwise it might have extra headers, that would need to be removed.

 

It only works in esxi7 (tested only U3), not on esxi6.

Here is the twitter thread that lead me to this solution:

 

  • Like 2
Link to comment
Share on other sites

 Share

×
×
  • Create New...