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
*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 system.*
*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?