All of lore.kernel.org
 help / color / mirror / Atom feed
From: willy@linux.intel.com (Matthew Wilcox)
Subject: [PATCH] NVMe: Do not set queue depth beyond device max
Date: Fri, 27 Jul 2012 10:07:24 -0400	[thread overview]
Message-ID: <20120727140724.GJ22985@linux.intel.com> (raw)
In-Reply-To: <1343341268-24613-1-git-send-email-keith.busch@intel.com>

On Thu, Jul 26, 2012@04:21:08PM -0600, Keith Busch wrote:
> Set the depth to the device maximum if the requested depth exceeds the
> device's capabilities.

The problem is that nvme_alloc_queue is called for both IO queues and
the admin queue, but MQES only applies to the IO queues.

I think we need to read it in nvme_setup_io_queues() instead.  This also
has the advantage of only reading MQES once instead of once per queue.

> @@ -892,8 +892,12 @@ static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev, int qid,
>  							int depth, int vector)
>  {
>  	struct device *dmadev = &dev->pci_dev->dev;
> -	unsigned extra = (depth / 8) + (depth * sizeof(struct nvme_cmd_info));
> -	struct nvme_queue *nvmeq = kzalloc(sizeof(*nvmeq) + extra, GFP_KERNEL);
> +	unsigned extra;
> +	struct nvme_queue *nvmeq;
> +
> +	depth = min_t(int, NVME_CAP_MQES(readq(&dev->bar->cap)) + 1, depth);
> +	extra = DIV_ROUND_UP(depth, 8) + (depth * sizeof(struct nvme_cmd_info));
> +	nvmeq = kzalloc(sizeof(*nvmeq) + extra, GFP_KERNEL);
>  	if (!nvmeq)
>  		return NULL;
>  

      reply	other threads:[~2012-07-27 14:07 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-26 22:21 [PATCH] NVMe: Do not set queue depth beyond device max Keith Busch
2012-07-27 14:07 ` Matthew Wilcox [this message]

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=20120727140724.GJ22985@linux.intel.com \
    --to=willy@linux.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 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.