public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Oliver Smith-Denny" <osde@linux.microsoft.com>
To: devel@edk2.groups.io
Cc: Hao A Wu <hao.a.wu@intel.com>, Ray Ni <ray.ni@intel.com>,
	Jian J Wang <jian.j.wang@intel.com>,
	Liming Gao <gaoliming@byosoft.com.cn>,
	Michael Kubacki <mikuback@linux.microsoft.com>,
	Sean Brogan <sean.brogan@microsoft.com>
Subject: [edk2-devel][PATCH v2 0/2] Add Volatile Keyword to NvmExpress Passthru CQs
Date: Thu, 27 Apr 2023 10:36:20 -0700	[thread overview]
Message-ID: <20230427173622.10614-1-osde@linux.microsoft.com> (raw)

NVMe CQs are hardware queues mapped to EFI memory.
In the NVMExpress Passthru implementations in PEI and DXE,
it has been observed that NVMe CQs 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.

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

Changes v1 => v2:
=================
- Remove volatile keyword from SQ

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 CQ
  Add volatile keyword to NvmExpressPei's Passthru CQ

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

-- 
2.40.0


             reply	other threads:[~2023-04-27 17:36 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-27 17:36 Oliver Smith-Denny [this message]
2023-04-27 17:36 ` [edk2-devel][PATCH v2 1/2] Add the volatile keyword to NvmExpressDxe's Passthru CQ Oliver Smith-Denny
2023-04-27 17:36 ` [edk2-devel][PATCH v2 2/2] Add volatile keyword to NvmExpressPei's " Oliver Smith-Denny
2023-05-04  2:19 ` [edk2-devel][PATCH v2 0/2] Add Volatile Keyword to NvmExpress Passthru CQs Wu, Hao A
2023-05-08  2:33   ` Wu, Hao A
2023-05-05  1:51 ` Michael Kubacki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230427173622.10614-1-osde@linux.microsoft.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox