**** YOU DO THIS AT YOUR OWN RISK, I TAKE NO RESPONSIBILITY FOR DAMAGES CAUSED BY FOLLOWING THIS GUIDE****
Hello everyone.
You might be interested to know that it is indeed possible to set PCIE 2.0 on ALL slots in your mac pro regardless of EFI drivers. I've only tested this on the mac pro, but it may work on other systems with different PCI memory offsets. This guide is currently only for the bottom two x16 slots.
This is done by directly modifying the PCI root device's memory space before boot. This sounds a LOT more complicated than it really is.
Steps:
1. Install refit
2. Boot into efi shell
3. Run the following commands:
Offsets:
Bottom x16 slot: 00000300c0
Top x16 slot: 00000700c0
For each offset, run:
mm <offset> PCI
This will bring up a prompt similar to this one:
PCI 0x0000000000300c0 : 0x01 >
The 0x01 at the end indicates the target link speed, valid values are 0x01 for pcie 1.1, and 0x02 for pcie 2.0.
Enter '02' then press enter to set pcie 2.0 for that slot.
Exit mm by entering 'q' then enter.
4. Now get back to refit using the following commands:
fs0:
cd efi
cd refit
refit.efi
5. Select your OS and enjoy that sweet PCIE 2.0
Note: This is easily scriptable. I will write a boot script based off this for refit/refind soon that will set pcie 2.0 for all slots on the 2010 mac pro.
EDIT:
Here's the script I made. Install refit and put this script at the root of your EFI volume as "startup.nsh".
for %i in 00000300c0 00000700c0
mm %i 1 ;PCI :2
endfor
fs0:\efi\refit\refit.efi
Now when you select efi shell in refit, your x16 slots will get set to 2.0, then you'll drop back into refit. If you don't do anything, it will try to boot into the efi shell after the timeout, basically looping. You'll have to either edit the last line in the script to point to your chosen OS, or just deal with manually selecting your OS every boot.
Edit 2: Looks like waking the system from sleep resets the registers, I'm working on something to remedy that issue soon.