nvme: add chk_rdy quirk for some Samsung drives
Add some known Samsung controllers to those requiring the quirk, NVME_QUIRK_DELAY_BEFORE_CHK_RDY. Addresses an issue for those who may not have later firmware that corrects the problem. Correspondingly, extend the delay from 2 secs to 2.5 secs. Change-Id: Iee773905a2a49711775042c061f6c347e0da85e9 Signed-off-by: Lance Hartmann <lance.hartmann@oracle.com> Reviewed-on: https://review.gerrithub.io/419273 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
parent
07926e1b55
commit
b4ceb613e1
@ -47,6 +47,7 @@ extern "C" {
|
||||
#define SPDK_PCI_ANY_ID 0xffff
|
||||
#define SPDK_PCI_VID_INTEL 0x8086
|
||||
#define SPDK_PCI_VID_MEMBLAZE 0x1c5f
|
||||
#define SPDK_PCI_VID_SAMSUNG 0x144d
|
||||
#define SPDK_PCI_VID_VIRTUALBOX 0x80ee
|
||||
#define SPDK_PCI_VID_VIRTIO 0x1af4
|
||||
#define SPDK_PCI_VID_CNEXLABS 0x1d1d
|
||||
|
@ -1589,12 +1589,12 @@ nvme_ctrlr_process_init(struct spdk_nvme_ctrlr *ctrlr)
|
||||
nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_DISABLE_WAIT_FOR_READY_0, ready_timeout_in_ms);
|
||||
|
||||
/*
|
||||
* Wait 2 secsonds before accessing PCI registers.
|
||||
* Wait 2.5 seconds before accessing PCI registers.
|
||||
* Not using sleep() to avoid blocking other controller's initialization.
|
||||
*/
|
||||
if (ctrlr->quirks & NVME_QUIRK_DELAY_BEFORE_CHK_RDY) {
|
||||
SPDK_DEBUGLOG(SPDK_LOG_NVME, "Applying quirk: delay 2 seconds before reading registers\n");
|
||||
ctrlr->sleep_timeout_tsc = spdk_get_ticks() + 2 * spdk_get_ticks_hz();
|
||||
SPDK_DEBUGLOG(SPDK_LOG_NVME, "Applying quirk: delay 2.5 seconds before reading registers\n");
|
||||
ctrlr->sleep_timeout_tsc = spdk_get_ticks() + (2500 * spdk_get_ticks_hz() / 1000);
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
|
@ -66,6 +66,12 @@ static const struct nvme_quirk nvme_quirks[] = {
|
||||
{ {SPDK_PCI_VID_MEMBLAZE, 0x0540, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID},
|
||||
NVME_QUIRK_DELAY_BEFORE_CHK_RDY
|
||||
},
|
||||
{ {SPDK_PCI_VID_SAMSUNG, 0xa821, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID},
|
||||
NVME_QUIRK_DELAY_BEFORE_CHK_RDY
|
||||
},
|
||||
{ {SPDK_PCI_VID_SAMSUNG, 0xa822, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID},
|
||||
NVME_QUIRK_DELAY_BEFORE_CHK_RDY
|
||||
},
|
||||
{ {SPDK_PCI_VID_VIRTUALBOX, 0x4e56, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID},
|
||||
NVME_QUIRK_DELAY_AFTER_QUEUE_ALLOC
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user