freebsd-dev/sys/dev/nvme
Warner Losh f93b7f954e Support doorbell strides != 0.
The NVMe standard (1.4) states

>>> 8.6 Doorbell Stride for Software Emulation
>>> The doorbell stride,...is useful in software emulation of an NVM
>>> Express controller. ...  For hardware implementations of the NVM
>>> Express interface, the expected doorbell stride value is 0h.

However, hardware in the wild exists with a doorbell stride of 1
(meaning 8 byte separation). This change supports that hardware, as
well as software emulators as envisioned in Section 8.6. Since this is
the fast path, care has been taken to make this computation
efficient. The bit of math to compute an offset for each is replaced
by a memory load from cache of a pre-computed value.

MFC After: 3 days
Reviewed by: scottl@
Differential Revision: https://reviews.freebsd.org/D21514
2019-09-04 20:08:36 +00:00
..
nvme_ahci.c It turns out the duplication is only mostly harmless. 2019-08-23 22:52:58 +00:00
nvme_ctrlr_cmd.c Make NVMe compatible with the original API 2018-08-22 04:29:24 +00:00
nvme_ctrlr.c Support doorbell strides != 0. 2019-09-04 20:08:36 +00:00
nvme_ns_cmd.c Add a brief comment explaining why we can return ETIMEDOUT from the call to the 2019-09-02 17:10:46 +00:00
nvme_ns.c In all the places that we use the polled for completion interface, except crash 2019-09-02 17:11:27 +00:00
nvme_pci.c Implement nvme suspend / resume for pci attachment 2019-09-03 15:26:11 +00:00
nvme_private.h Support doorbell strides != 0. 2019-09-04 20:08:36 +00:00
nvme_qpair.c Support doorbell strides != 0. 2019-09-04 20:08:36 +00:00
nvme_sim.c Fix nda(4) PCIe link status output 2019-06-07 18:34:48 +00:00
nvme_sysctl.c Keep track of the number of commands that exhaust their retry limit. 2019-07-19 18:39:24 +00:00
nvme_test.c Remove #ifdef code to support FreeBSD versions that haven't been 2019-02-27 22:05:01 +00:00
nvme_util.c sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
nvme.c Implement nvme suspend / resume for pci attachment 2019-09-03 15:26:11 +00:00
nvme.h Add nvmecontrol resv to handle NVMe reservations. 2019-08-05 17:36:00 +00:00