From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Keith Busch <kbusch@kernel.org>
Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org,
Paul Pawlowski <paul@mrarm.io>, Jens Axboe <axboe@fb.com>,
Christoph Hellwig <hch@lst.de>,
Minwoo Im <minwoo.im.dev@gmail.com>,
Damien Le Moal <Damien.LeMoal@wdc.com>
Subject: Re: [PATCH v3] nvme-pci: Support shared tags across queues for Apple 2018 controllers
Date: Mon, 05 Aug 2019 16:49:23 +1000 [thread overview]
Message-ID: <6290507e1b2830b1729fc858cd5c20b85d092728.camel@kernel.crashing.org> (raw)
In-Reply-To: <2030a028664a9af9e96fffca3ab352faf1f739e5.camel@kernel.crashing.org>
On Tue, 2019-07-30 at 13:28 -0700, Benjamin Herrenschmidt wrote:
> > One problem is that we've an nvme parameter, io_queue_depth, that a user
> > could set to something less than 32, and then you won't be able to do
> > any IO. I'd recommend enforce the admin queue to QD1 for this device so
> > that you have more potential IO tags.
>
> So I had a look and it's not that trivial. I would have to change
> a few things that use constants for the admin queue depth, such as
> the AEN tag etc...
>
> For such a special case, I am tempted instead to do the much simpler:
>
> if (dev->ctrl.quirks & NVME_QUIRK_SHARED_TAGS) {
> if (dev->q_depth < (NVME_AQ_DEPTH + 2))
> dev->q_depth = NVME_AQ_DEPTH + 2;
> }
>
> In nvme_pci_enable() next to the existing q_depth hackery for other
> controllers.
>
> Thoughts ?
Ping ? I had another look today and I don't feel like mucking around
with all the AQ size logic, AEN magic tag etc... just for that sake of
that Apple gunk. I'm happy to have it give up IO tags, it doesn't seem
to make much of a difference in practice anyway.
But if you feel strongly about it, then I'll implement the "proper" way
sometimes this week, adding a way to shrink the AQ down to something
like 3 (one admin request, one async event (AEN), and the empty slot)
by making a bunch of the constants involved variables instead.
This leas to a question: Wouldn't be be nicer/cleaner to make AEN be
tag 0 of the AQ ? That way we just include it as reserved tag ? Not a
huge different from what we do now, just a thought.
Cheers,
Ben.
next prev parent reply other threads:[~2019-08-05 6:49 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-19 5:31 Benjamin Herrenschmidt
2019-07-19 5:45 ` Balbir Singh
2019-07-19 12:28 ` Christoph Hellwig
2019-07-19 13:51 ` Benjamin Herrenschmidt
2019-07-22 21:54 ` Benjamin Herrenschmidt
2019-07-23 1:36 ` Ming Lei
2019-07-30 15:30 ` Keith Busch
2019-07-30 20:15 ` Benjamin Herrenschmidt
2019-07-30 20:28 ` Benjamin Herrenschmidt
2019-08-05 6:49 ` Benjamin Herrenschmidt [this message]
2019-08-05 13:49 ` Keith Busch
2019-08-05 18:27 ` Sagi Grimberg
2019-08-05 18:35 ` Keith Busch
2019-08-05 19:07 ` Jens Axboe
2019-08-05 19:56 ` Sagi Grimberg
2019-08-05 20:07 ` Sagi Grimberg
2019-08-06 5:26 ` Benjamin Herrenschmidt
2019-08-06 5:26 ` Benjamin Herrenschmidt
2019-08-06 5:24 ` Benjamin Herrenschmidt
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=6290507e1b2830b1729fc858cd5c20b85d092728.camel@kernel.crashing.org \
--to=benh@kernel.crashing.org \
--cc=Damien.LeMoal@wdc.com \
--cc=axboe@fb.com \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=minwoo.im.dev@gmail.com \
--cc=paul@mrarm.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
Powered by JetHome