linux-nvme.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: keith.busch@intel.com (Keith Busch)
Subject: [PATCH v6 RFC] nvme: improve performance for virtual NVMe devices
Date: Thu, 30 Mar 2017 13:33:24 -0400	[thread overview]
Message-ID: <20170330173324.GH20181@localhost.localdomain> (raw)
In-Reply-To: <1490633408-27529-1-git-send-email-helen.koike@collabora.com>

On Mon, Mar 27, 2017@01:50:08PM -0300, Helen Koike wrote:
> changes since v5:
> 	- remove anonymous dbbuf struct in struct nvme_dev and struct nvme_queue
> 	- use inline functions for sq_idx and cq_idx instead of macros
> 	- add a warning when nvme_dbbuf_set fails
> 	- remove comment "Borrowed from vring_need_event"
> 	- change formatting of the parameters in nvme_write_doorbell
> 	- don't fail nvme_reset_work if nvme_dbbuf_dma_alloc fails
> 	- remove nvme_write_doorbell_{sq,cq} wrappers
> 	- in nvme_write_doorbell(), call writel last

I'm pretty much okay with this. The only thing I'd change is to call
nvme_dbbuf_dma_free only when we're unbinding so that we don't have to
reallocate it on a every controller reset:
 
> +static int nvme_dbbuf_dma_alloc(struct nvme_dev *dev)
> +{
> +	unsigned int mem_size = nvme_dbbuf_size(dev->db_stride);

	if (dev->dbbuf_dbs)
		return 0;

> +
> +	dev->dbbuf_dbs = dma_alloc_coherent(dev->dev, mem_size,
> +					    &dev->dbbuf_dbs_dma_addr,
> +					    GFP_KERNEL);
> +	if (!dev->dbbuf_dbs)
> +		return -ENOMEM;
> +	dev->dbbuf_eis = dma_alloc_coherent(dev->dev, mem_size,
> +					    &dev->dbbuf_eis_dma_addr,
> +					    GFP_KERNEL);
> +	if (!dev->dbbuf_eis) {
> +		dma_free_coherent(dev->dev, mem_size,
> +				  dev->dbbuf_dbs, dev->dbbuf_dbs_dma_addr);
> +		dev->dbbuf_dbs = NULL;
> +		return -ENOMEM;
> +	}
> +
> +	return 0;
> +}

> @@ -1066,6 +1187,7 @@ static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid,
>  	nvmeq->q_depth = depth;
>  	nvmeq->qid = qid;
>  	nvmeq->cq_vector = -1;
> +	nvme_dbbuf_init(dev, nvmeq, qid);
>  	dev->queues[qid] = nvmeq;
>  	dev->queue_count++;

Remove the above since it's duplicated in nvme_init_queue.

> @@ -1700,6 +1825,7 @@ static void nvme_dev_disable(struct nvme_dev *dev, bool shutdown)
>  		nvme_disable_admin_queue(dev, shutdown);
>  	}
>  	nvme_pci_disable(dev);
> +	nvme_dbbuf_dma_free(dev);

And move this to nvme_pci_free_ctrl().

  reply	other threads:[~2017-03-30 17:33 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-14 18:04 [PATCH v2 RFC] nvme: improve performance for virtual NVMe devices Helen Mae Koike Fornazier
2016-04-21 13:33 ` Helen Koike
2016-04-21 13:38   ` Christoph Hellwig
2016-04-21 18:11     ` Ming Lin
2016-04-27 15:26       ` Helen Koike
2016-05-03  8:05       ` Christoph Hellwig
2016-05-04 16:48         ` Helen Koike
2016-05-05 14:17           ` Christoph Hellwig
2016-05-11 16:50     ` Helen Koike
2016-05-11 17:43       ` Keith Busch
2016-05-12  4:05         ` Helen Koike
2016-05-12  7:05           ` Christoph Hellwig
     [not found]             ` <CALu-fzt8=kmzZDqKsRYE42Q+F+Zu3U_s6XErpd9izXdxG1cUMA@mail.gmail.com>
     [not found]               ` <CAPst7KAAymUqbNwzxNAczduF6iLXQAMm5-auEdXZ_zHwhHtbWQ@mail.gmail.com>
2016-05-12 17:29                 ` Mike Waychison
2016-05-05 15:15 ` Helen Koike
2016-05-05 15:24 ` Helen Koike
2016-08-16  1:41 ` [PATCH v3 RFC 0/2] Virtual NVMe device optimization Helen Koike
2016-08-16  1:41   ` [PATCH v3 RFC 2/2] nvme: improve performance for virtual NVMe devices Helen Koike
2016-08-16 20:45     ` J Freyensee
2016-08-16 23:45       ` Keith Busch
2017-03-17 21:44     ` [PATCH v4 RFC] " Helen Koike
2017-03-17 22:28       ` Keith Busch
2017-03-17 22:26         ` Helen Koike
2017-03-24  4:23         ` [PATCH v5 " Helen Koike
2017-03-27  9:49           ` Christoph Hellwig
2017-03-27 16:04             ` Helen Koike
2017-03-27 16:25               ` Helen Koike
2017-03-27 14:43           ` Keith Busch
2017-03-27 16:50           ` [PATCH v6 " Helen Koike
2017-03-30 17:33             ` Keith Busch [this message]
2017-03-30 17:46               ` [PATCH v7 " Helen Koike
2017-03-31  7:01                 ` Christoph Hellwig
2017-04-01 21:50                   ` Helen Koike
2017-04-10 15:31                     ` Helen Koike
2017-04-10 15:37                     ` Christoph Hellwig
2017-04-10 15:51                   ` [PATCH v8] " Helen Koike
2017-04-14 18:10                     ` Helen Koike
2017-04-17 23:01                       ` Keith Busch
2017-04-17 23:20                         ` Helen Koike
2017-04-20 10:22                         ` Sagi Grimberg

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=20170330173324.GH20181@localhost.localdomain \
    --to=keith.busch@intel.com \
    /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;
as well as URLs for NNTP newsgroup(s).