[edk2-devel][PATCH v1 0/2] MdeModulePkg: Add Volatile Keyword to NvmExpress Passthru CQs and SQs

Oliver Smith-Denny posted 2 patches 1 year ago
Failed in applying to current master (apply log)
MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c    | 10 +++++-----
MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiPassThru.c | 10 +++++-----
2 files changed, 10 insertions(+), 10 deletions(-)
[edk2-devel][PATCH v1 0/2] MdeModulePkg: Add Volatile Keyword to NvmExpress Passthru CQs and SQs
Posted by Oliver Smith-Denny 1 year ago
NVMe CQs and SQs are hardware queues mapped to EFI memory.
In the NVMExpress Passthru implementations in PEI and DXE,
it has been observed that NVMe CQs and SQs are not marked
volatile, meaning the compiler has significant leeway
to optimize accesses to these structures.

This led to an issue where the passthru driver waited
for a timeout period for an NVMe CQ to mark that it was
finished with a transaction, but the compiler had
optimized away the read to the actual HW mapped memory,
so the transaction had completed but the timeout continued.

Marking the CQs as volatile fixes this issue as the reads
happen to the actual HW. There may be similiar issues with
NVMe SQs, so this patch also marks them as volatile to
reflect they are HW resources.

Personal GitHub PR: https://github.com/tianocore/edk2/pull/4289
Github branch: https://github.com/os-d/edk2/tree/osde/volatile_cq_v1

Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Michael Kubacki <mikuback@linux.microsoft.com>
Cc: Sean Brogan <sean.brogan@microsoft.com>

Oliver Smith-Denny (2):
  Add the volatile keyword to NvmExpressDxe's Passthru CQs and SQs.
  Add volatile keyword to NvmExpressPei's Passthru CQs and SQs.

 MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c    | 10 +++++-----
 MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPeiPassThru.c | 10 +++++-----
 2 files changed, 10 insertions(+), 10 deletions(-)

-- 
2.39.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#103262): https://edk2.groups.io/g/devel/message/103262
Mute This Topic: https://groups.io/mt/98378947/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-