HomeFreeBSD

Support doorbell strides != 0.

Description

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

Details

Provenance
impAuthored on
Differential Revision
D21514: Support doorbell strides != 0.
Parents
rS351827: MFC r351213: assert that td_lk_slocks is not leaked upon return from kernel
Branches
Unknown
Tags
Unknown