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

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
First of all, thanks t8er8 to run the tests.

Here is the link.

https://forums.macrumors.com/threads/graphical-bugs-in-steam-games-on-rx560.2117893/#post-26040584

2nd, don't be too happy, it's an absolutely useless finding for graphic cards at this moment (but may be useful for other PCIe 3.0 card). So, let's start.

Short version: AMD card can negotiate at PCIe 2.0 speed without resistor mod if there is a PCIe switch in the connection.

Long version: When forum members dealing with the PCIe SSD, we found that there is a strange behaviour that the PCIe 3.0 SSD cannot negotiate at PCIe 2.0 speed when installed in slot 1 or 2 via the DT-120 adaptor (but fall back to PCIe 1,1). However, if installed in slot 3 or 4, it can negotiate at PCIe 2.0 x4.

On the other hand, all PCIe 3.0 SSD installed on the Amfeltec, Highpoint cards can negotiate at PCIe 2.0 in slot 1 or 2.

So, what makes the PCIe SSD can negotiate at PCIe 2.0 speed? The answer is the PCIe switch. For amfeltec / highpoint card, there is a PCIe switch onboard, that's why they are so much more expensive than the DT-120. Not because they have more slot, the PCB itself is cheap, but the PCIe switch is much more expensive.

And why the SSD can negotiate at PCIe 2.0 in slot 3 or 4? Because slot 3 and 4 share use the same x4 lane, and there is a PCIe switch inside the connection.
Screen Shot 2018-05-08 at 08.20.30.png


So, apart from PCIe SSD, how about other PCIe 3.0 device?

Since there is another member doubt about his highpoint 1344A USB card's performance. So, I suggest him install the card into slot 3 (rather than slot 2), let see if the card can properly negotiate at PCIe 2.0 x4. The result is positive.

https://forums.macrumors.com/thread...classic-mac-pro.1501482/page-80#post-26039396

His card is a PCIe 3.0 x4 card. Each controller can negotiate at PCIe 3.0 x2, and there are two controller on board. Each controller handle two ports, therefore, all 4 ports can maintain 1GB/s throughput simultaneously.

If he install the card in slot 2. Despite system info shows the card negotiate at PCIe 3.0 speed (obviously that's wrong), the card was actually fallback to PCIe 1.1 speed. Therefore, only 2.5GT/s x4 for his card. Each controller communicates at PCIe 1.1 x2. So, 500MB/s max, which makes each port can only maintain 250MB/s throughput when under stress simultaneously.

After he moved the card to slot 3, despite the system info still shows 8GT/s, but the card actually negotiated at PCIe 2.0 speed. And makes him can maintain 500MB/s per port simultaneously.

So, is this theory also applicable to graphic card? Obviously yes.

When t8er8 install his RX560 in slot 1, the card negotiate at 2.5GT/s x8. But if he installed the card in slot 3, the system info actually shows the card now negotiate at 5GT/s x2. Not sure why further downgrade to x2, but at least, we know as long as there is a PCIe switch inside the connection. A PCIe 3.0 card should able to automatically negotiate at PCIe 2.0 speed, but not further fallback to PCIe 1.1 speed.

I have no "non Apple" AMD graphic card on hand now. So, can't test the theory by myself. But if anyone has unmodded AMD GPU (prefer x16 card, e.g. HD7950). You may try to install that in slot 3, and see if system info shows 5GT/s x4.

If yes, that means the 2.5GT/s limit on cMP is not graphic card's hardware problem, but more the cMP's problem. And not necessary require resistor mod to fix it.

I don't know if there is a way to add a PCIe switch between GPU and the slot. Even we can, I expect the cost will be abnormally high, and the benefit should be virtually zero for most users. Obviously, resistor mod make more sense if we really want to achieve 5GT/s on the cMP (if we know which resistor to mod).

However, this finding basically confirmed all PCIe 3.0 device will fallback to PCIe 1,1 in slot 1 and 2, but able to work at PCIe 2.0 in slot 3 and 4 natively. So, if you have any card's that are PCIe 3.0 x8 or below. Install that in slot 3 (or 4) is same as in slot 1 (and 2) or even better.

For PCIe 3.0 x8 card, if installed in slot 2. It will negotiate at PCIe 1.1 x8, the throughput equals to PCIe 2.0 x4. So, no penalty to install that card in slot 3 or 4.

But for PCIe 3.0 x4 (or below) card. The card will only negotiate at PCIe 1.1 x4 (or below) in slot 2, but able to negotiate at PCIe 2.0 x4 (or below) at slot 3 and 4. Which means works better in slot 3 and 4.

For mid to low end secondary GPU (assume primary GPU in slot 1), e.g. HD7950, since the card should able to negotiate at 5GT/s x4 in slot 3. So the performance penalty in real world will be virtually zero in most case. Therefore, even without resistor mod, there is no need to install this card in slot 2, which may be good to get the x16 link width, but bad for the primary GPU cooling in some case.
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong

MIKX

macrumors 68000
Dec 16, 2004
1,815
691
Japan
First .. a " salute " to " . . .
.. . . h9826790 !

From his previous posts one can fairly safely assume that. .

1. He lives in Hong Kong

2. Is married perhaps to a Japanese lady ( I'm an Australian married to a Japanese lady too ! )

3. Has at least one child.

. . this alone equates to a busy life.

Yet, to date, his thoroughly well thought out hands-on observations and hints have served me ) sic "US" ) very well indeed.

His English grammar could stand a 1% upwards push .. but then again he always gets his message across and also .. I am a fuc***ng great English teacher !

My wholehearted thanks to him for his valuable contributions to our Classic Mac Pro forum.

===============

Back to the thread's point.

As a nice example of SSD working well with GPU. . . X-Plane 11 is hard on CPU's, data transfer & GPU's.

Since I did the 5GT/s mods on a couple of my AMD cards, most notably an HD 5850 and an HD 7950, I have defintely seen faster FPS with faster scene loading and nicer anti-aliased rendering in both X-Plane 10 & 11 ( yes .. I can run XP 11 using an HD 5870 @ 5GT/.

I NOW run X-Plane 10 & 11 with a ( Fusion-bootable ) Samsung 960 EVO + a flashed( 5GT/s ) HIS HD 7950 3Gb.

I think it depends on what the individual OS X app demands from a 4,1>5,1 cMP is what determines whether the 5GT/s mod is worthy of the challenge and is worth addressing. whether it be a faster SSD or a wider PCIe link/width speed.

Personally, I can definitely see an obvious speedup across the board with both the 960 EVO and4 5GT/s working together.

In XP 10 & 11. I now no longer get stuttering even at the most highly object heavy sceneries.



Something to think about :
Q : Why did Apple OEM cards have the 5 GT/s mod turned on in the first place ? What function became available with this option available?





 
Last edited:
  • Like
Reactions: t8er8

cdf

macrumors 68020
Jul 27, 2012
2,251
2,571
This is very interesting. I'd just like to mention that the Kingston HyperX Predator PCIe SSD with the included adapter can negotiate a 5.0 link speed in slot 2. While many PCIe SSD adapters are passive, this one has three ICs: two MOSFETs and another that I couldn't identify...
 
  • Like
Reactions: crjackson2134

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
Something to think about : Q : Why did Apple OEM cards have the 5 GT/s mod i the first place ?

There are few possibilities.

1) They are natively PCIe 2.0 cards. So far, I only see this 2.5GT/s fallback on PCIe 3.0 device, not the 2.0 one.

2) The Mac EFI tell the card to downgrade itself to PCIe 2.0 in order to properly negotiate at PCIe 2.0 speed.

3) Apple tell the manufacture how to make that "resistor mod" in order to let the cMP detect that card as a PCIe 2.0 device.
[doublepost=1525793615][/doublepost]
This is very interesting. I'd just like to mention that the Kingston HyperX Predator PCIe SSD with the included adapter can negotiate a 5.0 link speed in slot 2. While many PCIe SSD adapters are passive, this one has three ICs: two MOSFETs and another that I couldn't identify...

AFAIK, the Kingston HyperX Predator is a PCIe 2.0 SSD, not PCIe 3.0.
Screen Shot 2018-05-08 at 23.44.30.png
Screen Shot 2018-05-08 at 23.44.12.png
 
Last edited:

thomasthegps

macrumors regular
Sep 23, 2015
220
145
France
First of all, thanks t8er8 to run the tests.

Here is the link.

https://forums.macrumors.com/threads/graphical-bugs-in-steam-games-on-rx560.2117893/#post-26040584

2nd, don't be too happy, it's an absolutely useless finding for graphic cards at this moment (but may be useful for other PCIe 3.0 card). So, let's start.

Short version: AMD card can negotiate at PCIe 2.0 speed without resistor mod if there is a PCIe switch in the connection.

Long version: When forum members dealing with the PCIe SSD, we found that there is a strange behaviour that the PCIe 3.0 SSD cannot negotiate at PCIe 2.0 speed when installed in slot 1 or 2 via the DT-120 adaptor (but fall back to PCIe 1,1). However, if installed in slot 3 or 4, it can negotiate at PCIe 2.0 x4.

On the other hand, all PCIe 3.0 SSD installed on the Amfeltec, Highpoint cards can negotiate at PCIe 2.0 in slot 1 or 2.

So, what makes the PCIe SSD can negotiate at PCIe 2.0 speed? The answer is the PCIe switch. For amfeltec / highpoint card, there is a PCIe switch onboard, that's why they are so much more expensive than the DT-120. Not because they have more slot, the PCB itself is cheap, but the PCIe switch is much more expensive.

And why the SSD can negotiate at PCIe 2.0 in slot 3 or 4? Because slot 3 and 4 share use the same x4 lane, and there is a PCIe switch inside the connection.
View attachment 761068

So, apart from PCIe SSD, how about other PCIe 3.0 device?

Since there is another member doubt about his highpoint 1344A USB card's performance. So, I suggest him install the card into slot 3 (rather than slot 2), let see if the card can properly negotiate at PCIe 2.0 x4. The result is positive.

https://forums.macrumors.com/thread...classic-mac-pro.1501482/page-80#post-26039396

His card is a PCIe 3.0 x4 card. Each controller can negotiate at PCIe 3.0 x2, and there are two controller on board. Each controller handle two ports, therefore, all 4 ports can maintain 1GB/s throughput simultaneously.

If he install the card in slot 2. Despite system info shows the card negotiate at PCIe 3.0 speed (obviously that's wrong), the card was actually fallback to PCIe 1.1 speed. Therefore, only 2.5GT/s x4 for his card. Each controller communicates at PCIe 1.1 x2. So, 500MB/s max, which makes each port can only maintain 250MB/s throughput when under stress simultaneously.

After he moved the card to slot 3, despite the system info still shows 8GT/s, but the card actually negotiated at PCIe 2.0 speed. And makes him can maintain 500MB/s per port simultaneously.

So, is this theory also applicable to graphic card? Obviously yes.

When t8er8 install his RX560 in slot 1, the card negotiate at 2.5GT/s x8. But if he installed the card in slot 3, the system info actually shows the card now negotiate at 5GT/s x2. Not sure why further downgrade to x2, but at least, we know as long as there is a PCIe switch inside the connection. A PCIe 3.0 card should able to automatically negotiate at PCIe 2.0 speed, but not further fallback to PCIe 1.1 speed.

I have no "non Apple" AMD graphic card on hand now. So, can't test the theory by myself. But if anyone has unmodded AMD GPU (prefer x16 card, e.g. HD7950). You may try to install that in slot 3, and see if system info shows 5GT/s x4.

If yes, that means the 2.5GT/s limit on cMP is not graphic card's hardware problem, but more the cMP's problem. And not necessary require resistor mod to fix it.

I don't know if there is a way to add a PCIe switch between GPU and the slot. Even we can, I expect the cost will be abnormally high, and the benefit should be virtually zero for most users. Obviously, resistor mod make more sense if we really want to achieve 5GT/s on the cMP (if we know which resistor to mod).

However, this finding basically confirmed all PCIe 3.0 device will fallback to PCIe 1,1 in slot 1 and 2, but able to work at PCIe 2.0 in slot 3 and 4 natively. So, if you have any card's that are PCIe 3.0 x8 or below. Install that in slot 3 (or 4) is same as in slot 1 (and 2) or even better.

For PCIe 3.0 x8 card, if installed in slot 2. It will negotiate at PCIe 1.1 x8, the throughput equals to PCIe 2.0 x4. So, no penalty to install that card in slot 3 or 4.

But for PCIe 3.0 x4 (or below) card. The card will only negotiate at PCIe 1.1 x4 (or below) in slot 2, but able to negotiate at PCIe 2.0 x4 (or below) at slot 3 and 4. Which means works better in slot 3 and 4.

For mid to low end secondary GPU (assume primary GPU in slot 1), e.g. HD7950, since the card should able to negotiate at 5GT/s x4 in slot 3. So the performance penalty in real world will be virtually zero in most case. Therefore, even without resistor mod, there is no need to install this card in slot 2, which may be good to get the x16 link width, but bad for the primary GPU cooling in some case.


Good find! Although If I understand correctly maybe putting a pice switch between the GPU and the PCIE 1 or 2 slot might still result in 5GT but only x8 or x4, no ? I'd think it depends on what type of switch you use ?
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
Good find! Although If I understand correctly maybe putting a pice switch between the GPU and the PCIE 1 or 2 slot might still result in 5GT but only x8 or x4, no ? I'd think it depends on what type of switch you use ?

No idea yet. This x4 downgrade to x2 only exist in that RX560. Didn't exist in any other situation yet (e.g. PCIe SSD, USB 3.1 card, etc).
 
  • Like
Reactions: t8er8

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
I am wondering if there is an option for modding the card bios so it will communicate rather as PCIE 2.0 than PCIE 3.0 card. It may be sufficient to maintain 5GT/s link speed.
Also some black magic (at least for me) below may be helpful for more advanced users:

https://superuser.com/questions/1095073/where-does-pci-e-link-width-negotiation-occur

https://forums.xilinx.com/t5/PCI-Express/How-to-change-PCIe-negotiated-speed/td-p/730307

Modding the card's BIOS won't work on the latest card (both Nvidia's Pascal series, or AMD Vega series), their BIOS are signed. Any mod will void the BIOS.

For older card, may be possible, but I think using something like pciutils are easier and safer.
 

pablos

macrumors newbie
Feb 24, 2016
9
3
Modding the card's BIOS won't work on the latest card (both Nvidia's Pascal series, or AMD Vega series), their BIOS are signed. Any mod will void the BIOS.

For older card, may be possible, but I think using something like pciutils are easier and safer.
From what I found the speed is communicated electrically, hence it needs to be set either inside the card bios before system starts and card send signal, or by physical mod.

My understanding is that what we need is to trace the signal that communicates the card speed and modulate it so the host computer understand that the card is running at pcie 2.0 rather than 3.0.
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
From what I found the speed is communicated electrically, hence it needs to be set either inside the card bios before system starts and card send signal, or by physical mod.

My understanding is that what we need is to trace the signal that communicates the card speed and modulate it so the host computer understand that the card is running at pcie 2.0 rather than 3.0.

I don't think so. Otherwise, Nvidia web driver won't able to let the graphic card run at PCIe 2.0 speed in macOS. Obviously software method is possible and good enough.

Of course, AMD card may be different. But definitely not all PCIe card set the speed before system start.
 

Fl0r!an

macrumors 6502a
Aug 14, 2007
909
530
Something for you to read: http://forum.netkas.org/index.php?topic=13541.0

GPUs use a set of straps to configure various low level settings, which need to be available early before the card has POSTed. Some can only be changed in hardware, others can be changed by software modifications (e.g. device IDs to some degree).

Some "educated guesses":

The cMP seems to rely on specific straps to negotiate 5 GT/s lane width. I don't know if those are specific to Apple's implementation or if this is documented somewhere and other vendors just don't make any use of it. Using the commands from the link modifies the PCI configuration space to force 5 GT/s (not sure if it's documented somewhere or he found the exact location by comparing dumps with different GPUs installed). Well, at least until a sleep/wake resets the config.
People (well, mainly MVC) have found ways to fix these straps in hardware (AMD GPUs) or in software (Nvidia BIOS modification or web driver), but this doesn't mean that it isn't possible the other way around.

I guess a PCI switch will always report full PCIE 2.0 speed in a "Mac Pro compatible way" when it finds a compatible device, so there's no need for Apple specific mods.
 

thomasthegps

macrumors regular
Sep 23, 2015
220
145
France
Something for you to read: http://forum.netkas.org/index.php?topic=13541.0

GPUs use a set of straps to configure various low level settings, which need to be available early before the card has POSTed. Some can only be changed in hardware, others can be changed by software modifications (e.g. device IDs to some degree).

Some "educated guesses":

The cMP seems to rely on specific straps to negotiate 5 GT/s lane width. I don't know if those are specific to Apple's implementation or if this is documented somewhere and other vendors just don't make any use of it. Using the commands from the link modifies the PCI configuration space to force 5 GT/s (not sure if it's documented somewhere or he found the exact location by comparing dumps with different GPUs installed). Well, at least until a sleep/wake resets the config.
People (well, mainly MVC) have found ways to fix these straps in hardware (AMD GPUs) or in software (Nvidia BIOS modification or web driver), but this doesn't mean that it isn't possible the other way around.

I guess a PCI switch will always report full PCIE 2.0 speed in a "Mac Pro compatible way" when it finds a compatible device, so there's no need for Apple specific mods.

The force 5GT/sec command does not work.
 

pablos

macrumors newbie
Feb 24, 2016
9
3
I tested wx5100 with OSX 10.13.5 on both slot 1 and slot 2, sme result:
Link Width: x8
Link Speed: 2.5 GT/s
Do you think these are connected issues, half of the Link Width and half of the Link Speed?
Screen Shot 2018-06-04 at 08.05.04.png
 

pablos

macrumors newbie
Feb 24, 2016
9
3
On the other note, regardless of the pie slot, my wx5100 is listed as two separate cards, GPU and AUDIO, maybe this is some kind of trace?



Screen Shot 2018-06-04 at 10.24.38.png






Screen Shot 2018-06-04 at 10.24.38.png
Screen Shot 2018-06-04 at 10.24.31.png
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
On the other note, regardless of the pie slot, my wx5100 is listed as two separate cards, GPU and AUDIO, maybe this is some kind of trace?

View attachment 764351

View attachment 764351 View attachment 764352

Thanks for the report.

2.5GT in slot 1 and 2 is expected. But I really have no idea why the lane width is only x8.

And thanks to confirm that the card can negotiate at the expected PCIe 2.0 x4 in slot 3 or 4.

That audio device's driver is owned by Apple, and Apple intentionally remove the driver (it was there at very early High Sierra beta). That "extra" device exist on almost all modern graphic cards. And no need to worry, No driver installed is normal.
NO HDMI Audio.png


If you want to activate it in order to get audio through display port. You may try the HDMIAudio.kext.

https://forums.macrumors.com/threads/guide-hdmi-audio.1499797/

After you correctly apply the HDMIAudio.kext, you will see something like this
Screen Shot 2018-06-04 at 18.13.10.png
 
Last edited:

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
Time is better spent on making the gop driver work tbh

Any direction? I tried, but failed. If you can provide me some direction on how to start. I don't my to spend more time at there.

At the mean time, I can only share what I've discovered, and hope can help the others to have better experience.
 
  • Like
Reactions: EdMun

thomasthegps

macrumors regular
Sep 23, 2015
220
145
France
Any direction? I tried, but failed. If you can provide me some direction on how to start. I don't my to spend more time at there.

At the mean time, I can only share what I've discovered, and hope can help the others to have better experience.


Can you explain what you have done ? I’m intersted in knowing how to attach a gop driver to the efi. Did you use the injector command tool developed on the other post ?
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
Can you explain what you have done ? I’m intersted in knowing how to attach a gop driver to the efi. Did you use the injector command tool developed on the other post ?

Not enough info / resource to try the bootrom method yet. At this moment, the risk is way too high as well. I don’t know any Mac that has GOP UEFI in their bootrom, no way to extract a “known good driver” from any Mac’s firmware.

I tried rEFInd and Clover. Tried almost all different combinations of settings, EFI drivers, but still unable to make the 1080Ti display anything via GOP UEFI.

Of course, if we can hack the bootrom, that will be the best way to implant GOP UEFI. But same as NVMe, we may first need some software method to make it work (e.g. via USB boot re-direction), then we can go further to hack the firmware. It will be extremely hand (and lucky) to make it right on the 1st firmware hack for Nvidia GOO UEFI to work on cMP.

If I have the hardware to force flash the chip, I will be more OK to test different firmware hack. But I don’t have those equipments. So, better to stay at the boot loader level at this moment.
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
what is USB boot re-direction ?

Put the NVMe driver in a USB thumb driver. Install the USB drive into one of the natively bootable USB 2.0 port. The initial boot will load the NMVe driver from the USB drive, then the cMP now can access the NVMe and load the OS which is actually installed on the NVMe.
 
  • Like
Reactions: handheldgames
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.