Small NvmExpressDxe driver

I’ve updated the binaries to improve compatibility with NVMe controllers. I was able to optimize a little bit more on the size so this addition resulted in smaller binaries.

@Fernando :
Please feel free to update your thread after testing.

@Ethaniel :
Thank you for having optimized again the “small” NVMe modules and for having improved their compatibility.
Fortunately my old Z68 system was still available for tests and I had the required time
a) to replace the related module within the BIOS,
b) to flash the modded BIOS,
c) to re-customize the BIOS settings and
d) to boot into the OS, which was still located on the 250 GB Samsung 960 EVO.
Result: Everything worked flawlessly. The boot time seems to be extremely reduced by this specific brandnew module.

Thanks again for your efforts and congratulations for the result of your work!

EDIT: The start post of >this< thread has already been updated by me.

I was able to reduce the size a little bit even more, I’ve updated the binaries.

@Fernando :
I’m glad that the previous version improved performance for you.
I would appreciate if you could test this updated version too.
Although currently I expect no performance changes, please let me know if you find any performance degradation.
Thank you.

@Ethaniel :
Thanks for continuing your efforts to compile an extra small, but fully working NVMe module.
I will test it tomorrow morning and let you know the result.

@Fernando :
Since you are going to test it tomorrow, I’ve uploaded a new version. The only change being an internal protocol GUID that ensures that there is no collision with other UEFI NVMe drivers loaded on the same system (unlikely but possible), but I’ve always forgot to change it previously.
Please download the latest version before testing. Thank you.

@Ethaniel :
Thanks for the re-optimization of both “small” NVMe modules.
I just have successfully tested the uncompressed variant with my Z68 system running Win10 on a 250 GB Samsung 960 EVO SSD.
After having flashed the modded BIOS and re-set the required BIOS settings within the BOOT section, the system booted instantly into the OS.
According to my experiences the “small” NVMe module is the best choice for everyone, whose UEFI BIOS natively doesn’t support NVMe.
Advantages:
1. Extremely reduced space requirement within the DXE Driver Volume (due to the exremely shrinked size) > removal of other DXE drier(s) not needed!
2. Extremely fast booting (due to the code optimization and the removement of unneeded code parts)

Thanks again!

I was able to optimize the size of the binaries a little bit more. I also optimized the NVMe controller initialization that that might result in a slight performance improvement.
Note that I have no more optimization opportunities on my to-do list so I have no plans to release more versions unless an issue is found.

@Fernando :
Could you please be as kind as testing this version too.
Thank you.

For you I will test until my life’s end…
Result of my recent test: Simply perfect - boot time was below 3 seconds!

Off topic:

We both seem to be carved from the same wood.
Our kind of view: Nothing is so good that it can not be improved.

@Fernando :
Thank you very much for testing it and updating your thread this quickly.
Now I recommend NvmExpressDxe_Small over NvmExpressDxe_3 even when there is enough free space on the DXE volume as NvmExpressDxe_Small contains bug fixes and performance improvements not present in NvmExpressDxe_3.

@Ethaniel :
I totally agree with you.
As soon as I got more positive feedback from other users, who inserted the final variant of the “small” Nvme module or replaced the NvmExpressDxe_3 module by the new “small” one, I will remove the download links to the NvmExpressDxe_3 modules from the start post of the related thread.
Thanks again for your work!

I suggest that you add a version # (something like v1, v2, etc) in your first post so that everyone can easily know when you made a change/improvement to your file.

@Phoenix48 :
The previous versions were either experimental or beta. The current version should be considered 1.0 quality.
Your request makes sense, I will introduce versioning in future releases.

Thanks for sharing the results Fernando, looks like you have the same system as I do (p8z68v-pro with the i5-2500k)! I’m really tempted to buy the Optane 900p after seeing your results!

Do you remember which PCIE slot you used, and if it affected in any way the performance of the videocard?

@legatinho :
1. My Z68 chipset mainboard is the ASUS P8Z68-V.
2. During my tests I had inserted the NVMe SSD resp. the M.2>PCIe Adapter with the NVMe SSD into the first complete PCIe slot (the nearest to the CPU).
3. As long as I have the Z68 chipset system I have never inserted and used a discrete Graphics Card (I do not play video games). The iGPU was good enough for me.

I have tried the small file for my P8Z77-V-Deluxe. Bios flashing was done, but when i try to install w10 with a usb stick i get the message that windows cant be installed on my nvme on pcie (i can see the device). Ideas?

@Sponge - you do not need to use Small one, here is a properly modified BIOS if you are unsure of your mod BIOS (post #77) - [OFFER] ASUS P8Z77-V PRO (and its non-PRO and DELUXE variants) BIOSes modded with all the latest modules (6)
Then after USB Flashback of BIOS, you need to follow all steps in #4 of the “This is what you should do” section of this guide - [Guide] How to get full NVMe support for all Systems with an AMI UEFI BIOS

Make USB Initialized as GPT before you put windows media on it, and then install to RAW NVME (no partitions, windows will make them)

Oh nice i didnt saw that - thanks! i will try the file and make sure i make everything from "this is what you should do" right - i report later :slight_smile:

@Sponge :
I don’t think, that your problem has been caused by the “small sized” variant of the NVMe module and suspect, that you haven’t set the “Secure Boot” and “Fast Boot” settings within the BIOS to DISABLED.

@Fernando yes you are right and my w10 image was to big so it was ntfs … with the file from @Lost_N_BIOS and your manual it worked perfect - now im happy - thank you very much!

@Sponge - NTFS is fine, but MBR initialized USB or NVME is not. Good to hear you are all sorted out now and up and running on your new NVME