svn commit: r350068 - head/sys/dev/nvme
Warner Losh
imp at FreeBSD.org
Tue Jul 16 22:55:31 UTC 2019
Author: imp
Date: Tue Jul 16 22:55:30 2019
New Revision: 350068
URL: https://svnweb.freebsd.org/changeset/base/350068
Log:
Assume that the timeout value from the capacity is 1-based
Neither the 1.3 or 1.4 standards say this number is 1's based, but adding 1
costs little and copes with those NVMe drives that report '0' in this field
cheaply. This is consistent with what the Linux driver does as well.
Modified:
head/sys/dev/nvme/nvme_ctrlr.c
Modified: head/sys/dev/nvme/nvme_ctrlr.c
==============================================================================
--- head/sys/dev/nvme/nvme_ctrlr.c Tue Jul 16 22:27:49 2019 (r350067)
+++ head/sys/dev/nvme/nvme_ctrlr.c Tue Jul 16 22:55:30 2019 (r350068)
@@ -1255,7 +1255,7 @@ nvme_ctrlr_construct(struct nvme_controller *ctrlr, de
/* Get ready timeout value from controller, in units of 500ms. */
cap_lo = nvme_mmio_read_4(ctrlr, cap_lo);
- to = (cap_lo >> NVME_CAP_LO_REG_TO_SHIFT) & NVME_CAP_LO_REG_TO_MASK;
+ to = ((cap_lo >> NVME_CAP_LO_REG_TO_SHIFT) & NVME_CAP_LO_REG_TO_MASK) + 1;
ctrlr->ready_timeout_in_ms = to * 500;
timeout_period = NVME_DEFAULT_TIMEOUT_PERIOD;
More information about the svn-src-all
mailing list