]> www.infradead.org Git - users/jedix/linux-maple.git/commit
nvme/quirk: Add a delay before checking for adapter readiness
authorGuilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Tue, 14 Jun 2016 21:22:41 +0000 (18:22 -0300)
committerChuck Anderson <chuck.anderson@oracle.com>
Sun, 18 Jun 2017 19:44:08 +0000 (12:44 -0700)
commit90a78b259aef80ba4beed4e0754fde513e8720f7
tree91539b09e7ae39775b2a5e78590d832b2cfcea37
parent9a1391cbc808c36f71fe52dfac850dd4b727452e
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 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.

Signed-off-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
(cherry picked from commit 54adc01055b75ec8769c5a36574c7a0895c0c0b2)

Orabug: 26275976

Signed-off-by: Ashok Vairavan <ashok.vairavan@oracle.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/nvme/host/core.c
drivers/nvme/host/nvme.h
drivers/nvme/host/pci.c