Currently we have no mechanism for adding device-specific quirks to the SPDK NVMe driver.
We'd certainly consider adding quirks in the same fashion as the Linux kernel driver
though, and would welcome patches that improved the applicability of SPDK to a wider range
of (potentially out of spec) devices. I'm sure over time the team at Intel working on
SPDK will add this, but it is not on our immediate roadmap, so patches from the community
would be the best way to get this going.
On Thu, 2016-09-08 at 14:25 +0800, Wang Weber wrote:
In online FW upgrade process, the memblaze Pblaze4 NVMe device requires an extra delay
during controller reset process. The following patch email from HGST describes the similar
issue in detail.
Subject: [PATCH v3] nvme/quirk: Add a delay before checking for adapter readiness
When disabling the controller, the specification says the register NVME_REG_CC should be
written and then driver needs to wait the adapter to be ready, which is checked by reading
another register bit (NVME_CSTS_RDY). There's a timeout validation in this checking,
so in case this timeout is reached the driver gives up and removes the adapter from the
After a firmware activation procedure, the PCI_DEVICE(0x1c58, 0x0003) (HGST adapter) end
up being removed if we issue a reset_controller, because driver keeps verifying the
NVME_REG_CSTS until the timeout is reached. This patch adds a necessary quirk for this
adapter, by introducing a delay before nvme_wait_ready(), so the reset procedure is able
to be completed. This quirk is needed because just increasing the timeout is not enough in
case of this adapter - the driver must wait before start reading NVME_REG_CSTS register on
this specific device.
The standard Linux NVMe driver now has quirk “NVME_QUIRK_DELAY_BEFORE_CHK_RDY” for HGST
and memblaze devices. Is there any plan to add this to SPDK?
SPDK mailing list