From: hch@lst.de (Christoph Hellwig)
Subject: [PATCH rfc] nvme-pci: make sure to flush sqe writes before db record update
Date: Thu, 8 Mar 2018 08:56:28 +0100 [thread overview]
Message-ID: <20180308075628.GA16084@lst.de> (raw)
In-Reply-To: <20180307175626.15222-1-sagi@grimberg.me>
Yes, looks like we'd need this.
On Wed, Mar 07, 2018@07:56:26PM +0200, Sagi Grimberg wrote:
> A wmb() is always required before operations that trigger DMA
> (e.g. mmio write to a doorbell record). Not having it might result
> in write reordering causing the device to fetch partly updated
> submission queue entries.
>
> Reported-by: Jason Gunthorpe <jgg at ziepe.ca>
> Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
> ---
> Note that this is stable material, We could add stable
> tag when applying it to the nvme tree.
>
> drivers/nvme/host/pci.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
> index db4dedb1cc8f..6c2dcef1ff91 100644
> --- a/drivers/nvme/host/pci.c
> +++ b/drivers/nvme/host/pci.c
> @@ -437,8 +437,14 @@ static void __nvme_submit_cmd(struct nvme_queue *nvmeq,
> if (++tail == nvmeq->q_depth)
> tail = 0;
> if (nvme_dbbuf_update_and_check_event(tail, nvmeq->dbbuf_sq_db,
> - nvmeq->dbbuf_sq_ei))
> + nvmeq->dbbuf_sq_ei)) {
> + /*
> + * Make sure that descriptors are written before
> + * doorbell record.
> + */
> + wmb();
> writel(tail, nvmeq->q_db);
> + }
> nvmeq->sq_tail = tail;
> }
>
> --
> 2.14.1
---end quoted text---
next prev parent reply other threads:[~2018-03-08 7:56 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-07 17:56 [PATCH rfc] nvme-pci: make sure to flush sqe writes before db record update Sagi Grimberg
2018-03-08 7:56 ` Christoph Hellwig [this message]
2018-03-08 15:51 ` Keith Busch
2018-03-08 17:20 ` Jason Gunthorpe
2018-03-08 17:37 ` Keith Busch
2018-03-08 17:56 ` Sagi Grimberg
2018-03-08 18:36 ` Jason Gunthorpe
2018-03-08 18:42 ` Keith Busch
2018-05-30 23:34 ` Sagi Grimberg
2018-05-31 5:47 ` Christoph Hellwig
2018-05-31 7:53 ` Sagi Grimberg
2018-05-31 15:20 ` Jason Gunthorpe
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-all 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=20180308075628.GA16084@lst.de \
--to=hch@lst.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.