@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.