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

As CodeRush said at post #3, adding NVMe support is not just about the RST firmware & driver. What OEMs mean is probably that the BIOS is now NVMe ready. When Intel decides to release an official NVMe RST firmware it’s a completely different story.

Back in January I had done a small search for RST packages (firmware + documentation) but at the time I hadn’t found anything after 13.0 and RSTe 3.0. Today (after 3 months) I added 13.2 OEM documentation. Source is MSI.

http://www.mediafire.com/download/m70rsa…r+Dieter+v4.rar

Capture.PNG

NVMe will be the successor of the AHCI standard and I doubt, that Intel will ever add NVMe support into their Intel RST/RSTe RAID ROM/EFI modules.
Furthermore I am not sure, whether we will ever get our hands on an Intel RST driver v13.7.

The latest BIOSes for my ASRock Z97 Extreme6 do support NVMe as well, but by completely separate NVMe modules (look >here<), which have nothing to do with the Intel RAID ROM/EFI modules.

NVMe will be the successor of the AHCI standard and I doubt, that Intel will ever add NVMe support into their Intel RST/RSTe RAID ROM/EFI modules.
Furthermore I am not sure, whether we will ever get our hands on an Intel RST driver v13.7.

The latest BIOSes for my ASRock Z97 Extreme6 do support NVMe as well, but by completely separate NVMe modules (look >here<), which have nothing to do with the Intel RAID ROM/EFI modules.




I can’t download those NVMe modules. I get a 0 Byte file…

I just tested it without any issue. The downloaded unzipped NVMe BIOS files have a size of 11 KB resp. 19 KB.

I am willing to try a modded BIOS.
I’ll buy an Intel SSD 750 400GB.
You guys mod the hell out of my ASRock X79 Extreme4 and I test it.
Does this sound good to you?

EDIT: found THIS. At least ASUS talks about backporting NVMe to X79.
Maybe other companies will do the same, if ASUS succeeds…

No, not really.
You obviously overestimate the NVMe support options of your X79 mainboard and our BIOS modding abilities.

No, not really.
You obviously overestimate the NVMe support options of your X79 mainboard and our BIOS modding abilities.



OK, then lets see what ASUS and maybe other manufaturers will do about this.

EDIT: Let me ask one last question: If ASUS deliveres a working backport for X79 systems,
would the modding community work on porting this to other manufacturers like MSI or Gigabyte?

Guys, check this out!
ASUS had success on porting NVMe to Z87 and X79!
They now started a poll - let’s vote!

Why would they add support to x79 and not to Z77, which is newer and more common?


Read the page I posted. They tested it with X79, Z77 and Z87.
They got good results on X79 and Z87, but they didn’t post the reults for the Z77 chipset.

I want NVMe support for the X79 platform, because it’s the “Enthusiast” platform.
It has 40 (!) PCIe lanes, so you can use 2 graphics cards AND the NVMe SSD.

Z77 is the performance consumer stuff. It has only 16 PCIe lanes.
So you have to cut down bandwidth for the graphics card (bad for GPGPU) or
use the integrated GPU if you want to use a NVMe SSD
(depends on the number of PCIe slots of your mainboard).

PS: The Z87 platform has only 16 PCIe lanes, just like Z77.
Z77/Z87 - I couldn’t care less…
Nice to have, but not needed anyways…

EDIT: We are talking about CPU PCIe lanes.
The chipset only supports PCIe 2.0 x1 lanes and are completely useless for NVMe.

Chipset support 8 pcie lanes, which can be configured to 4x1 and 1x4. They are only 2.0, but can still get ~2GB/s in x4 config.

Oh, and i couldn’t care less for obsolete x79.


Theoretically ~2GB/s. 2GB/s is just the beginning of NVMe.
Please do not forget, that PCIe 3.0 is requiered for NVMe.
PCIe 2.0 is not supported and will never be.

I didn’t want to insult you, I’m sorry. But If you want NVMe for Z77/Z87,
you really NEED PCIe 3.0. So you have to cut down GPU bandwidth or use the iGPU,
depending on your mainboard.

X79 is still a great platform. It’s outdated, you’re right.
But from this POV, Z77/Z87 are outdated, too.
BUT neither of them have reached EOL status.

I don’t think pcie 3.0 is required, becasue NVMe was developed way before pcie 3.0 was introduced in final form.
Maybe some high end SSDs will support only pcie3.0, that is possible.


Supermicro states, that NVMe is using PCIe Gen3: LINK
Here is a review of the Intel DC3700 NVMe SSD (for PCIe slot): LINK
From page 2 of the review:



EDIT: Sure, the NVMHCI Work Group released the first specification (1.0) on March 1st, 2011.
The final PCIe 3.0 specification was released in 2012.
That does not mean, that they didn’t use non-final drafts of the specification.
I didn’t read the full NVMe specification, as everyone states “PCIe 3.0 is what you need for NVMe”.

You can read here, the first NVMe devices used PCIe 2.0.
As i said, maybe some devices require pcie 3.0, some only recommend it for max performance. I don’t think NVMe is tied to specific pcie version.

But it’s hard to find some useful info on this topic, because it’s all about marketing. You know, buy new motherborad,cpu,ram, but it may not be necessary.



If you scroll down to comments,, you can read, that one user used intel 750 on Z77 (pcie 2.0 slot) and its working, but not bootable. (link fixed)


And another thing (found this on anandtech)

Because the SSD 750 is a PCIe 3.0 design, it must be connected directly to the CPU’s PCIe 3.0 lanes for maximum throughout. All the chipsets in Intel’s current line up are of the slower PCIe 2.0 flavor, which would effectively cut the maximum throughput to half of what the SSD 750 is capable of. The even bigger issue is that the DMI 2.0 interface that connects the platform controller hub (PCH) to the CPU is only four lanes wide (i.e. up to 2GB/s), so if you connect the SSD 750 to the PCH’s PCIe lanes and access other devices connected to the PCB (e.g. USB, SATA or LAN) at the same time the performance would be even further handicapped.

There is simply only one consumer NVMe SSD series out there.
This is the Intel SSD 750 series and they need PCIe 3.0.
All other NVMe SSDs are for enterprise systems and I doubt that these systems will be modded.
Furthermore, enterprise NVMe SSDs are very expensive.

Stalemate dude. There are PCIe 2.0 NVMe SSDs, but not for the consumer market.

Let’s just see, what ASUS does about this issue.

EDIT: this happens when I click your link:

I’ve made some additional research towards AMI’s NVMe driver:
1. UEFI portion is a normal UEFI bus driver without any exceptional dependencies. This means that you can borrow it from the newer BIOS versions for Z97 boards and integrate into older P67+ ones. I don’t know if AptioV drivers will work in Aptio4 BIOS or not, it should be tested.
2. Legacy portion requires a BLOB to extend int 13h handler and an SMM driver to help on that, so I’m sure you can’t add legacy NVMe support into the BIOS without recompilation.
3. Setup strings for NVMe are also integrated into TSE binary during compilation, so they can’t be added either, but there are nothing interesting there, only the name and capacity of the detected device.

So, if your board is able to run UEFI storage drivers (like Intel SATA driver or AMI AHCI driver), it should also be able to boot from NVMe device after adding a driver, but only in UEFI mode.


ASRock Z97 Extreme6 has AMI Aptio 4 BIOS and NVMe support.
Aptio 4: confirmed with UBU
NVMe: confirmed on BIOS download page

Does that mean that NvmeInt13 and NvmeSmm are for legacy use only? And for UEFI, is there any benefit between AMI and EDK2 driver? And if someone adds this driver, should it be with AMI GUID (634E8DB5-C432-43BE-A653-9CA2922CC458) or any GUID? (Edit: I’m seeing the GUID 5BE3BDF4-53CF-46a3-A6A9-73C34A6E5EE3 in NvmExpressDxe.inf, is this the one to use?) Should it have have the same dependency, PcdDxe, if I’m not mistaken?

I was wrong about NvmeSmm not required for UEFI - it definitely is, DXE driver transfers the whole data into SMRAM after initialization. NvmeInt13 appears to be separated from CSM16 build process, i.e. it should also work in previous Aptio4 BIOSes without recompilation. GUIDs are totally irrelevant and can be changed freely. PcdDxe dependency is not needed because AMI doesn’t use non-fixed PCDs for their modules.
The only problem I have now is the lack of NVMe devices to test any available driver, so I don’t know if AMI driver is better or worse that TianoCore one.