From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org,
Jens Axboe <axboe@fb.com>, Keith Busch <kbusch@kernel.org>,
Paul Pawlowski <paul@mrarm.io>
Subject: Re: [PATCH 2/3] nvme: Retrieve the required IO queue entry size from the controller
Date: Tue, 16 Jul 2019 16:21:14 +1000 [thread overview]
Message-ID: <ad18ff8d004225e102076f8e1fb617916617f337.camel@kernel.crashing.org> (raw)
In-Reply-To: <20190716060430.GB29414@lst.de>
On Tue, 2019-07-16 at 08:04 +0200, Christoph Hellwig wrote:
> >
> > + /*
> > + * If our IO queue size isn't the default, update the setting
> > + * in CC:IOSQES.
> > + */
> > + if (ctrl->iosqes != NVME_NVM_IOSQES) {
> > + ctrl->ctrl_config &= ~(0xfu << NVME_CC_IOSQES_SHIFT);
> > + ctrl->ctrl_config |= ctrl->iosqes << NVME_CC_IOSQES_SHIFT;
> > + ret = ctrl->ops->reg_write32(ctrl, NVME_REG_CC,
> > + ctrl->ctrl_config);
> > + if (ret) {
> > + dev_err(ctrl->device,
> > + "error updating CC register\n");
> > + goto out_free;
> > + }
> > + }
>
> Actually, this doesn't work on a "real" nvme controller, to change CC
> values the controller needs to be disabled.
Not really. The specs says that MPS, AMD and CSS need to be set before
enabling, but IOCQES and IOSQES can be modified later as long as there
is no IO queue created yet.
This is necessary otherwise there's a chicken and egg problem. You need
the admin queue to do the controller id in order to get the sizes and
for that you need the controller to be enabled.
Note: This is not a huge issue anyway since I only update the register
if the required size isn't 6 which is probably never going to be the
case on non-Apple HW.
> So back to the version
> you circulated to me in private mail that just sets q->sqes and has a
> comment that this is magic for The Apple controller. If/when we get
> standardized large SQE support we'll need to discover that earlier or
> do a disable/enable dance. Sorry for misleading you down this road and
> creating the extra work.
I think it's still ok, let me know...
Ben.
next prev parent reply other threads:[~2019-07-16 6:21 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-16 0:46 [PATCH 1/3] nvme: Pass the queue to SQ_SIZE/CQ_SIZE macros Benjamin Herrenschmidt
2019-07-16 0:46 ` [PATCH 2/3] nvme: Retrieve the required IO queue entry size from the controller Benjamin Herrenschmidt
2019-07-16 6:04 ` Christoph Hellwig
2019-07-16 6:21 ` Benjamin Herrenschmidt [this message]
2019-07-16 9:33 ` Christoph Hellwig
2019-07-16 10:58 ` Benjamin Herrenschmidt
2019-07-16 12:05 ` Christoph Hellwig
2019-07-16 12:17 ` Benjamin Herrenschmidt
2019-07-16 12:25 ` Christoph Hellwig
2019-07-16 0:46 ` [PATCH 3/3] nvme: Add support for Apple 2018+ models Benjamin Herrenschmidt
2019-07-16 6:06 ` Christoph Hellwig
2019-07-16 6:22 ` Benjamin Herrenschmidt
2019-07-16 0:49 ` [PATCH 1/3] nvme: Pass the queue to SQ_SIZE/CQ_SIZE macros Benjamin Herrenschmidt
2019-07-16 5:59 ` Christoph Hellwig
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=ad18ff8d004225e102076f8e1fb617916617f337.camel@kernel.crashing.org \
--to=benh@kernel.crashing.org \
--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=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
all inboxes | Powered by JetHome®