Page 1 of 10
#1 [GUIDE] Adding Bifurcation Support to ASUS X79 UEFI BIOS by JackSted 07.01.2019 04:57

avatar

Adding Bifurcation Support For ASUS X79 in UEFI BIOS Menu

Primarily for use with riser cards that split PCIe slots into multiples without a PLX chip
To avoid the cost of a PLX Riser card/PLX Multi M.2 (RAID)

For this guide I used a P9X79 Motherboard, UEFI BIOS 4701 , and a Asus Hyper M.2 x16 Card some variables may be different on other boards.

Warnings: Here be dragons.
Bifurcation is tested with an a Hyper M.2 x16 Card with 2 Samsung 500GB 970 EVO's installed on a x8 slot bifurcated to x4x4.
Should you run into trouble with certain settings a CMOS clear should fix things.
You should have a stable bios on USB for Flashback method with the correct flashback name on hand.
At this point 4x4x4x4 bifurcation does not work properly. When testing on the second x16 slot connected to IOU 3 only the first and last NVME slot were functional in of my Asus Hyper M.2 x16 Card. On the white x16 (x8 electrical IOU/IOH1) slot in 4x4 bifurcation the first 2 NVME slots are functional.
Do not purchase more then 2 NVME drives for use on a Asus Hyper M.2 x16 Card

Files Used:
P9X79 Bios version 4701
AMIBCP v4.55
UEFITool 0.25.1
Hex Workshop 6.7 (Trial) Though any HEX-Editor like HxD (free) should work.
Universal IFR Extractor 0.7

Open the P9X79.CAP BIOS in AMIBCP in this tree of the UEFI BIOS menu you should see that there are 2 System Agent Configuration folders
If not you should search for another place in the menus where bifurcation or lane splitting with a dropdown under Optimal/Failsafe says x16 x8 or x4x4.




Open P9X79.CAP with UEFITool CTRL+F to search click Text tab Look for "IOH" text in the bios double click on one of the messages this should point to the "setup" section.
Export Freeform subtype GUID to setup.sct CTRL+E and extract it to setup.txt using Universal IFR Extractor.

You should find some lines like this there should be multiple of similar blocks:

IOU1 - PCIe Port, VarStoreInfo (VarOffset/VarName): 0x88, VarStore: 0x1, QuestionId: 0x89, Size: 1, Min: 0x0, Max 0x0, Step: 0x0 {05 A6 A9 09 C8 09 89 00 01 00 88 00 10 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00}
0xC58C3 Default: DefaultId: 0x0, Value (8 bit): 0x1 {5B 0D 00 00 00 01 00 00 00 00 00 00 00}
0xC58D0 One Of Option: x4x4, Value (8 bit): 0x0 (default MFG) {09 0E CC 09 20 00 00 00 00 00 00 00 00 00}
0xC58DE One Of Option: x8, Value (8 bit): 0x1 {09 0E CB 09 00 00 01 00 00 00 00 00 00 00}


For my own testing purposes this is the bottom x16 sized x8 port im bifurcating to x4x4.

The register to do this is 0x88 or 0088.


Testing bifurcation functionality without flashing a new bios(optional):

Disable secure boot, reboot using a fat32 USB drive with https://github.com/tianocore/edk2/raw/ma...l/X64/Shell.efi renamed to Bootx64.efi in EFI\BOOT and http://ruexe.blogspot.com/ to edit the bios registers.

Modified from davidm71's post:

Search with [ALT] + [+=] for "setup" go to row 0080 then edit register 0088 to 0 [CTRL]+[W] writes it away and [ALT]+[Q] then reset.

You should now have bifurcation support barring a CMOS clear or battery fail.
You can check if the port in question is split with HWinfo:




Enabling the hidden System Agent Configuration Menu:

Applying the hex values in setup.sct for System Agent Configuration by referencing the earlier extracted setup.txt;

Suppress If {0A 82}
0xC29FB True {46 02}
0xC29FD Ref: System Agent Configuration, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x5, FormId: 0x41E {0F 0F 61 08 62 08 05 00 00 00 FF FF 00 1E 04}
0xC2A0C End If {29 02}


Where if 0A 82(Switches a ton things off we needent enable so were not changing it) is 46 02 (True) we disable the System Agent Configuration menu/form;
So we invert the function of Supress by changing it to False (47 02)

Search for HEX value 0F 0F 61 08 62 08 05 00 00 00 FF FF 00 1E 04 in setup.sct and lo and behold there is a 46 02 to the left of it.



Change it from 46 to 47 save the setup.sct open with UEFITool, look for "ioh" unicode text this leads to setup. Remove the Freeform subtype GUID, insert setup.sct after PE32 image and save the P9X79.cap
Optionaly open P9X79.cap with AMIBCP to disable what you dont need in the menu, save again.

Enabling the hidden PCI Subsystem Settings:

Applying the hex values in setup.sct for PCI Subsystem Settings by referencing the earlier extracted setup.txt;

Suppress If {0A 82}
0xC2995 True {46 02}
0xC2997 Ref: PCI Subsystem Settings, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x1, FormId: 0x40E {0F 0F AC 0A B2 0A 01 00 00 00 FF FF 00 0E 04}
0xC29A6 End If {29 02}


Where if 0A 82 is 46 02 (True) we disable the System Agent Configuration menu/form;
So we invert the function of Supress by changing it to False

Search for HEX value 0F 0F AC 0A B2 0A 01 00 00 00 FF FF 00 0E 04 in setup.sct and spot the 46 02 to the left of it.
Change it from 46 to 47 save the setup.sct open with UEFITool look for "ioh" unicode text this leads to setup remove the Freeform subtype GUID, insert setup.sct after PE32 image save the P9X79.cap

Optionaly open P9X79.cap with AMIBCP to disable what you dont need in the menu, save again.

Flash P9X79.cap (check asus.com for per model asus flash back naming) with the flash back method and Presto Changeo:


]





References:
1 [REQUEST] How to connect 2 M.2 SSDs to the same PCIe slot? With contributions by Lost_N_BIOS
2 [Guide] - How to Bifurcate a PCI-E slot by davidm71
3 Add option in AMI UEFI bios menu (how to?) (2)

If BSOD's occur now and then when writing to PCIE setting BIOS > Advanced > System Agent Configuration > IOH Configuration > Gen3 Equalization Phase 2/3 WA + Equalization Phase 2/3 Supported + Gen3 Equalization Redoing WA.
Set all to enabled.

EDIT01: First edit to change into a guide
EDIT02: Updated Bios in signature with 1 System Agent Configuration + PCI Subsystem Settings + Enabled Advanced Mode No Logo + NVME boot support by @Lost_N_BIOS
EDIT03: Added Updated BIOS Pics, Caution PCI Subsystem Settings option, Layout
EDIT04: Added stability bios tweaks.
EDIT05: Readability
EDIT06: Added non functional 4x4x4x4 bifurcation warning.
EDIT07: TinyFile went the way of the dodo so I updated the link in my profile.

#2 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by Lost_N_BIOS 07.01.2019 20:28

avatar

@JackSted - So this is finished BIOS now? If yes, do you want me to move it to the completed BIOS mods section?

#3 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by paranoid_android 07.01.2019 22:18

avatar

Cool, I had wanted to make use of the Asus HyperM.2 x16 Card since I heard of it.
I dont think I can create the modded file myself. I would want to use it on the latest Bios for P9X79 (4901) and P9X79E-WS (1704).
And if all goes well, on one Z9PE-D8 WS (5802).

#4 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by JackSted 07.01.2019 23:18

avatar

@paranoid_android
Good luck, all the hardware should support bifurcation at least on non PLX connected motherboard PCIe Ports.
Since this is my first bios mod I think your mods are in safer hands with Lost_N_BIOS in your thread.
[REQUEST] How to connect 2 M.2 SSDs to the same PCIe slot?

#5 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by paranoid_android 07.01.2019 23:38

avatar

@JackSted
Do you think that the presence of plx chips could cause a problem?
The P9X79E-WS Board has only one ×8 Port which is directly connected to the cpu, the others are connected to plx chips.
The P9X79-WS has no PLX chips onboard though.
I'll ask Lost_N_Bios about that too.

#6 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by Lost_N_BIOS 08.01.2019 08:58

avatar

I am unsure how PLX chips affect this kind of thing, you'll have to try and google around about PLX and bifurcation and see if you can find any good info. I think someone discussed that in detail here once, in another bifurcation related thread

#7 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by JackSted 08.01.2019 11:33

avatar

My instincts tell me PLX chips should be like lego in the sense that it speaks the full PCIe protocol you should even be able to stack them, provided you dont pull too much power. However PLX chip have their own firmware to configure their outgoing lane multiplexing/bifurcation so unless your bios hints that its "speaks" PLX eg: You have (hidden) options for bifurcation on all PCIe slots, you cannot bifurcate the pcie ports that connect to the 2 x16 PLX multiplexed into 2 x16 and one x8 slots, unless the PLX does some magical auto-detect bifurcation.
Finally a PCie card with a PLX chip on it should just work provided it isnt some proprietary server part like supermicro only (maybe break stuff or just not work).

#8 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by davidm71 08.01.2019 18:50

avatar

@JackSted

Congrats on your success and thank you for referencing my work prior.

#9 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by JackSted 08.01.2019 19:16

avatar

Thanks,
On the shoulders of giants and all that.

#10 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by KprW 25.01.2019 21:44

Very interesting. I just flashed my P9X79PRO to allow nvme support, and its working great. I wonder if it's possible to RAID0 (with RST, or maybe VROC) with HYPER M.2 X16 on x79?

#11 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by JackSted 26.01.2019 01:56

avatar

@KprW
Vroc rst raid is not possible with the HYPER M.2 X16 on X79 as far as I know, windows software raid however is.
The speed increases with software raid 0 2x EVO 970 500GB on HYPER M.2 X16 seem accepatable about 3800/4400 MB/s tho there might be room for improvement with tweaks.

#12 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by KprW 26.01.2019 08:09

Zitat von JackSted im Beitrag #12
@KprW
3800/4400 MB/s.


Those are good speeds. sequential r/w 128 kB benchmark puts EVO 970 around 1900/2500.

#13 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by Batou 14.02.2019 13:47

HI

THX for the great GUIDE i managed to do the Bifurcation for my Asus Rampage IV Formula + I added Nvme boot option working great with HYPER M.2 X16 +2 x Samsung 970 pro

#14 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by JackSted 14.02.2019 15:51

avatar

Glad to have helped :D, Performance as espected?, Any stability issues?

#15 RE: Adding Bifurcation Support For ASUS P9X79 UEFI BIOS by kosh06 06.05.2019 10:36

Hello, following the advice of [Offline] Lost_N_BIOS I came to watch the tuto.j'ai a card asus X79 sabertooth, I would like to put my PCIe port 2 forks 4x4x4x4, but on the tutorial I block "on the part of :

IOU1 - PCIe Port, VarStoreInfo (VarOffset/VarName): 0x88, VarStore: 0x1, QuestionId: 0x89, Size: 1, Min: 0x0, Max 0x0, Step: 0x0 {05 A6 A9 09 C8 09 89 00 01 00 88 00 10 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00}
0xC58C3 Default: DefaultId: 0x0, Value (8 bit): 0x1 {5B 0D 00 00 00 01 00 00 00 00 00 00 00}
0xC58D0 One Of Option: x4x4, Value (8 bit): 0x0 (default MFG) {09 0E CC 09 20 00 00 00 00 00 00 00 00 00}
0xC58DE One Of Option: x8, Value (8 bit): 0x1 {09 0E CB 09 00 00 01 00 00 00 00 00 00 00}

Today it is in place I boot on but I see only one SSD M2.

Thanks for your help

Xobor Forum Software von Xobor
Datenschutz