AMD FirePro S7100X Windows 10
Hello everyone, I'm back from a small break and catching up on my messages. I wanted to review some discoveries to make this card more compatible with bootcamp and expand our knowledge on its inner workings.
Firstly, you cannot arbitrarily assign any device ID (DEVID) to the MMX video card. One solution that AMD uses for setting a DEVID is to use six bits of straps and 10 bits of fuses to set the 16-bit DEVID. Fuses are an internal component of the GPU die and can pull either high or low to simulate a 1 or 0 to set a part of the DEVID. This is hard-coded during manufacturing and is unalterable.
The AMD vbios however contains a header entry. I’ve located the section of code that allows for software DEVID identification, but again its implementation will be limited by the hardware fuses that are already activated in the GPU die. This is somewhat alterable and we will take advantage of that next.
For these cards to be compatible with both macOS and Windows 10, a new DEVID needs to be chosen. The one that came with the stock card 6929, unfortunately is not recognized by macOS. Let's investigate:
In macOS, the AMD9000Controller kext is what initializes the Tonga Adapter in the S7100X. Variations of acceptable IDs are listed within its IOPCIMatch entries above.
After some experimenting, from my testing anyways, I decided to use 0x6939. Patching the vbios was simple and the video card accepted 0x6939 as a native DEVID without internal fuse conflict. There may indeed be others.
If we want this to work in the Windows environment, the revision ID (REV_) of the GPU needs to be altered as well! I’ve also located the region in the vbios where the revision ID is encoded (see below). A clue to which REV ID to set comes from the AMD drivers themselves, Let’s interrogate them. Looking in the driver file, we come across this section:
[ATI.Mfg.NTamd64.10.0...16299]
"%AMD6939.1%" = ati2mtag_Tonga, PCI\VEN_1002&DEV_6939&REV_00
"%AMD6939.2%" = ati2mtag_Tonga, PCI\VEN_1002&DEV_6939&REV_F0
"%AMD6939.3%" = ati2mtag_Tonga, PCI\VEN_1002&DEV_6939&REV_F1
Here we can see that 3 things needs to be correctly set:
Vendor ID (VEN_) : 1002
Device ID (DEV_) : 6939
Revision, (REV_) : 00/F0/F1
The areas to patch in the header are below:
View attachment 2115372
Bookmark 1 - highlights the 3 byte code used to set the Device ID (DEV_)
Bookmark 2 - highlights the Revision code (REV_) that needs to be set correctly to one of the 3 options above.
Therefore in summary, a stock
0x6929 REV 01 FirePro S7100X video card (not recognized by macOS), can be altered to appear as a
0x6939 REV 00 FirePro S7100X. It now has the advantage of being completely recognized by the macOS accelerators and should be identified with full acceleration by the Windows 10 Adrenalin drivers:
View attachment 2115371
Bingo!, no more "Microsoft Basic Display Adapter". You will noticed that Windows 10 will interpret the video card as a “Radeon R9 200 Series”. This is okay, it is only cosmetic. Windows 10 uses Driver Signatures for its OEM drivers and will not allow manipulation of them, nor will the AMD drivers. They compare any alterations in the
.inf files to a hash in the catalog file and will reject tampering.
The .rom file below has all the necessary patches applied.
Furthermore, it has been boosted to 750Mhz for GPU clock and 1300Mhz for Memory. I can show you in a different post how to manipulate these entries in the powerplay module. It probably can tolerate a lot higher as it is a server card.
View attachment 2115370
Insanely Great!
-Steve Jobs