[HowTo] Get full NVMe Support for all Systems with an AMI UEFI BIOS

You can try it, but I doubt, that you wll succeed.
By the way: The structure and the System BIOS files of AMI Aptio V BIOSes are quite different from AMI Aptio IV ones. Bad consequence: The transplantation of the related modules from an AMI Aptio V to an AMI Aptio IV BIOS is a high-risk action. The related mainboard may be bricked thereafter.

Hello,

iā€™m stuck at the DXE integration, iā€™ve tried to find DXE but it not showā€™s up in UEFITool0.22.4 am i getting something wrong? Link

My board is a Asrock X79 Extreme4.

1.jpg

@ich777 :
Here is the DXE Driver Volume of your mainboard BIOS:

Here is the DXE Driver Volume.png



My the way: The last listed DXE Driver is named ā€œaDefaultDXEā€.

@Fernando thank you, didnā€™t see it because the window is to small :smiley:

ā€¦and thank you for the hint :wink:
Hope youā€™re doing well and thank you for this great board!

Regards

Hello all!

First of all - congratulations for Fernando for having the best bios modding forum on the net! Iā€™ve used your guides many times in the past without any issues. Same with NVMe mod, however curiosity makes me to write my first post. Iā€™ve done my mod some time ago (in 2017 I guess) with v3 of the NvmExpressDxE. Recently bought NVMe drive which works and boots as described on Z87 board. Few days ago Iā€™ve check the thread again and noticed that file has been updated to v4. So my question is: are there any advantages on V4 compared to V3? My mind is a bit twisted and everything need to be updated, so Iā€™m torn - leave it or update?

Thanks!
D.

Fernando, would you happen to know the NVMe version for that one you uploaded in this forum post? 1.3 or newer i suppose?.. maybe 1.3c or something? Just curious

@darrecky :
Welcome to the Win-RAID Forum and thanks for your positive feedback!
When you update the NvmExpressDxe module to v4, you will not benefit regarding the functionality and the performance of the SSD, but you may get a shorter boot time and enhanced compatibility for future NVMe SSDs resp. their NVMe Controller.
If I were you, I would do it.
Regards
Dieter (alias Fernando)

I do not really understand. Which ā€œNVMe versionā€ (driver or BIOS module) and which Forum post do you mean?

I do not really understand. Which ā€œNVMe versionā€ (driver or BIOS module) and which Forum post do you mean?


I mean specifications. Sorry for not going over that in detail
https://en.wikipedia.org/wiki/NVM_Express

This question can only be answered by Ethaniel. He has compiled the NVMe EFI modules, which I am offering within the start post.

@Ethaniel :
Do you know which NVMe specification is supported by the NvmExpressDxe modules, which were customized by you?

@Fernando :
Thanks Fernando for being professional. Iā€™ve been a PITA asking Qā€™s. I just want to know literally everything so incase later on i might need the info atleast iā€™ve asked it and its on Win-Raid forums and maybe in future this forum might not be as active so getting into contact with you or others will be extremely hard. Just looking out for future :slight_smile: Thanks. Will look forward to Ethanielā€™s reply back.

@lime & @Fernando :
As far as I understand the code and the specifications, the EDK2 NVMe driver does not depend on any optional features or features introduced in later versions of the specification and all released versions of the specification seem to be backward compatible.

As a conclusion the driver should be compatible with all versions of the ā€œNVM Expressā€ specification listed on https://nvmexpress.org/resources/specifications/ (currently 1.0e - 1.3c)

Additional specifications, like NVMe Over Fabrics and NVM Express Management Interface are most likely not supported because are out of the scope of the driver.

The driver has two limitations:
- Only supports 4k page size (the specification allows for other page sizes but probably all NVMe controllers conform to this because the x86 architecture (including 64-bit extensions) is using this page size by default so 4k pages are most likely required for MMIO to work on this architecture)
- Only the NVM command set is supported (the specification allows for other command sets and the NVM command set is not required to be supported but no current specification defines any other command set)

Note that my changes should not affect specification compatibility so the above should be true for all existing versions of EDK2-based NVMe drivers.

Hi all,

I own an Asus P8Z77-V-Deluxe motherboard: https://www.asus.com/Motherboards/P8Z77Vā€¦specifications/

I would like to know if:
1. A PCIe adaptor could work on my motherboard?
2. If I could boot from it?
3. How can I tell if I have enough PCI lanes to get the full benefit of NVMe SSD?

This motherboard has the following PCI-E slots:
2 x PCIe 3.0/2.0 x16 (x16 or dual x8)
1 x PCIe 2.0 x16 (x4 mode, black)
4 x PCIe 2.0 x1 *4

The PCIe 3.0 is populated by 2 R9 290 GPUā€™s (CrossFire)
So my only option is the PCIe 2.0 x16 (x4 mode, black) <0-- Assuming questions 1 and 2 are no issue, would this PCIe slot cripple NVMe speeds?


Thanks!

@gil :
Here are my answers to your questions:
1.+2. Yes!
3. I am not able to count the already used and the free lanes of your specific system.

@gil :
1. Assuming you mean a PCIe to M.2 adapter, it should work. Make sure that the adapter has support for x4 lanes (and PCIe 2.0), but most likely the cheapest one you can find (with these specifications) should do it
2. Will not boot when using original BIOS. Should work with modded BIOS (see instructions in the start post of this thread)
3. According to the motherboard manual ā€œ1 x PCIe 2.0 x16 (x4 mode, black)ā€ is not sharing bandwidth with anything, so you should be able to use all four lanes in that socket

Since you want to keep using all your PCIe 3.0 lanes for GPUā€™s, you will be restricted to PCIe 2.0 speed. You want to make sure that both the adapter and the NVMe SSD has support for x4 lanes because your bandwidth will suffer otherwise.

PCIe 2.0 4x has ~2000 MB/s effective bandwidth that is more than the maximum effective bandwidth of SATA III that is ~600 MB/s, so it should be an improvement over SATA III SSDā€™s. High-end NVMe SSDā€™s have support for more than 2000 MB/s, so you may want to buy a less expensive NVMe SSD. Note that PCIe is full duplex so your motherboard should support 2000 MB/s read and 2000 MB/s write simultaneously for the PCIe 2.0 4x slot.

@Ethaniel :
Okay, thank you Ethaniel. Very helpful. Really looking forward to purchasing a Intel 900P 480GB :smiley:

@Fernando
Regarding: 3. I am not able to count the already used and the free lanes of your specific system.
What sort of information is required to be able to know how many free lanes I have?

@Ethaniel Yes, I mean PCIe to M.2 adapter.

I will make sure the adapter will support x4 lanes and PCIe 2.0

I want to mode my BIOS so it will support booting from PCIe. However, I think I read somewhere that the latest BIOS for my mobo is protected/locked, so I need to understand if I downgrade the BIOS version assuming itā€™s unlocked, what am I losing by doing so.

I started reading the guide for modding the BIOS but I lost track. It wasnā€™t clear to me if the tools are compatible with my BIOS and if I mod my BIOS, will I be able to restore my saved profile/setting.

Regarding ā€œNote that PCIe is full duplex so your motherboard should support 2000 MB/s read and 2000 MB/s write simultaneously for the PCIe 2.0 4x slot.ā€ - How can I verify this claim? I couldnā€™t find anything to support that for my motherboard.

If Iā€™m able to mod my BIOS correctly, Iā€™m thinking of buying one of these:
1. Samsung 960 EVO 500 M.2 SSD
2. Intel 760P 512GB PCIe M.2 80mm
Unless you can recommend on something more optimised to utilise 2000 MB/s read and a something closer to 2000 MB/s write?

Thanks for the help

@gil :
Based on otherā€™s report, USB BIOS Flashback should work just fine for flashing modded BIOS and for restoring the original or even an older one.

You should expect all your settings to be gone. Although you probably will be able to restore settings saved to an USB drive, I recommend performing the changes again manually because save/restore is not always reliable/stable in my experience.

These are theoretical maximum bandwidths based on the claimed PCIe 2.0 4x support of the motherboard and derived from the PCIe specification, but unfortunately the only reliable way to verify it is to test it. Every layer on top of PCIe has some performance overhead, so you probably will get less than that. Also note that Spectre and Meltdown mitigations take a heavy toll on I/O performance.

High write performance usually comes with even higher read performance, so I donā€™t really think that you will find a model with lower read performance and higher write performance. @Fernando probably has more experience with various NVMe models than I do.

Hi !

Thanks for a nice guide.

[Edit][solved] Had a problem that was an old Winrar-version

Another question is about raid. After this mod I cannot/shouldnt use raid at all?

@AAKEE :
Welcome to the Win-RAID Forum!

Who says that?
I havenā€™t yet seen a proof for this statement.

Regards
Dieter (alias Fernando)