From: Ming Lei <ming.lei@redhat.com>
To: Keith Busch <keith.busch@intel.com>
Cc: Jens Axboe <axboe@kernel.dk>, Christoph Hellwig <hch@lst.de>,
Sagi Grimberg <sagi@grimberg.me>,
linux-nvme@lists.infradead.org,
Bjorn Helgaas <helgaas@kernel.org>,
linux-pci@vger.kernel.org
Subject: Re: [PATCHv2 4/4] nvme-pci: Use PCI to handle IRQ reduce and retry
Date: Fri, 4 Jan 2019 10:41:18 +0800 [thread overview]
Message-ID: <20190104024117.GC31330@ming.t460p> (raw)
In-Reply-To: <20190103225033.11249-5-keith.busch@intel.com>
On Thu, Jan 03, 2019 at 03:50:33PM -0700, Keith Busch wrote:
> Restore error handling for vector allocation back to the PCI core.
>
> Signed-off-by: Keith Busch <keith.busch@intel.com>
> ---
> drivers/nvme/host/pci.c | 77 ++++++++++++++-----------------------------------
> 1 file changed, 21 insertions(+), 56 deletions(-)
>
> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
> index 1481bb6d9c42..f3ef09a8e8f9 100644
> --- a/drivers/nvme/host/pci.c
> +++ b/drivers/nvme/host/pci.c
> @@ -2059,37 +2059,43 @@ static int nvme_setup_host_mem(struct nvme_dev *dev)
> return ret;
> }
>
> -static void nvme_calc_io_queues(struct nvme_dev *dev, unsigned int irq_queues)
> +static void nvme_calc_io_queues(struct irq_affinity *affd, unsigned int nvecs)
> {
> + struct nvme_dev *dev = affd->priv;
> unsigned int this_w_queues = write_queues;
>
> /*
> * Setup read/write queue split
> */
> - if (irq_queues == 1) {
> + if (nvecs == 1) {
The above line can be 'nvecs <= 2', cause when nvecs is 2, one is for
admin queue, another can be for DEFAULT.
> dev->io_queues[HCTX_TYPE_DEFAULT] = 1;
> dev->io_queues[HCTX_TYPE_READ] = 0;
> - return;
> + goto set_sets;
> }
>
> /*
> * If 'write_queues' is set, ensure it leaves room for at least
> * one read queue
> */
> - if (this_w_queues >= irq_queues)
> - this_w_queues = irq_queues - 1;
> + if (this_w_queues >= nvecs - 1)
> + this_w_queues = nvecs - 1;
If we want to leave room for one read queue, 'this_w_queues' should be
set as 'nvecs - 2' given nvecs covers admin queue.
>
> /*
> * If 'write_queues' is set to zero, reads and writes will share
> * a queue set.
> */
> if (!this_w_queues) {
> - dev->io_queues[HCTX_TYPE_DEFAULT] = irq_queues;
> + dev->io_queues[HCTX_TYPE_DEFAULT] = nvecs - 1;
> dev->io_queues[HCTX_TYPE_READ] = 0;
> } else {
> dev->io_queues[HCTX_TYPE_DEFAULT] = this_w_queues;
> - dev->io_queues[HCTX_TYPE_READ] = irq_queues - this_w_queues;
> + dev->io_queues[HCTX_TYPE_READ] = nvecs - this_w_queues - 1;
> }
In above change, looks you starts to consider admin queue vector, which
is obvious one issue in current code.
So I'd suggest to fix nvme_calc_io_queues() in one standalone patch,
just what I posted, given this patch doesn't do "Restore error
handling for vector allocation back to the PCI core" only.
http://lists.infradead.org/pipermail/linux-nvme/2018-December/021879.html
Thanks,
Ming
next prev parent reply other threads:[~2019-01-04 2:41 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-03 22:50 [PATCHv2 0/4] NVMe IRQ sets fixups Keith Busch
2019-01-03 22:50 ` [PATCHv2 1/4] nvme-pci: Set tagset nr_maps just once Keith Busch
2019-01-04 1:46 ` Ming Lei
2019-01-03 22:50 ` [PATCHv2 2/4] nvme-pci: Distribute io queue types after creation Keith Busch
2019-01-04 2:31 ` Ming Lei
2019-01-04 7:21 ` Ming Lei
2019-01-04 15:53 ` Keith Busch
2019-01-04 18:17 ` Christoph Hellwig
2019-01-04 18:35 ` Keith Busch
2019-01-06 2:56 ` Ming Lei
2019-01-03 22:50 ` [PATCHv2 3/4] PCI/MSI: Handle vector reduce and retry Keith Busch
2019-01-04 2:45 ` Ming Lei
2019-01-04 22:35 ` Bjorn Helgaas
2019-01-04 22:56 ` Keith Busch
2019-01-03 22:50 ` [PATCHv2 4/4] nvme-pci: Use PCI to handle IRQ " Keith Busch
2019-01-04 2:41 ` Ming Lei [this message]
2019-01-04 18:19 ` Christoph Hellwig
2019-01-04 18:33 ` Keith Busch
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=20190104024117.GC31330@ming.t460p \
--to=ming.lei@redhat.com \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=helgaas@kernel.org \
--cc=keith.busch@intel.com \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=sagi@grimberg.me \
/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).