Spdk/doc
Andreas Economides 3b047a6162 nvmf/vfio-user: support shadow doorbells
As per the NVMe specification, a host can identify two areas of guest
memory: one of which is used for the host-written doorbells, and one of
which contains event indexes. The host writes to the shadow doorbell
area, but also writes to the controller's BAR0 doorbell area if the
corresponding event index is crossed by the update. This avoids many
mmio exits in interrupt mode, where BAR0 doorbells are not directly
mapped into the guest VM, with greatly improved performance.

This isn't a useful feature in BAR0 doorbells are mapped into the VM, so
we explicitly disable support in that case.

NB: the Windows NVMe driver doesn't yet support this feature.

Although the specification says that the admin queues should also engage
in this behaviour, in practice, no VM does, so have to include some
hacks to account for this.

Co-authored-by: John Levon <john.levon@nutanix.com>
Signed-off-by: John Levon <john.levon@nutanix.com>
Change-Id: I0646b234d31fbbf9a6b85572042c6cdaf8366659
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11492
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2022-04-21 08:12:29 +00:00
..
img spdk_top: update spdk_top docs for spdk.io 2021-03-08 10:48:47 +00:00
.gitignore doc: add output directory to .gitignore 2018-06-19 07:15:50 +00:00
about.md Fix Markdown MD026 linter warnings - trailing punctuation in header 2020-02-17 10:07:21 +00:00
accel_fw.md idxd: Eliminate configs 2022-03-21 11:05:28 +00:00
applications.md markdownlint: enable rule MD040 2021-09-08 21:53:48 +00:00
bdev_module.md doc: remove mentions of legacy config 2020-10-22 17:08:41 +00:00
bdev_pg.md bdev: Add spdk_for_each_bdev/bdev_leaf for clean up and further improvements 2022-04-05 07:30:47 +00:00
bdev.md bdev/crypto: Critical fix about using binary keys 2022-03-24 09:21:35 +00:00
bdevperf.md markdownlint: enable rule MD032 2021-08-26 19:27:22 +00:00
blob.md doc/blob: replace htmlonly graphic with ASCII art 2022-02-02 08:25:02 +00:00
blobfs.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
ci_tools.md doc: Add page describing OS distros used by the CI 2021-09-20 10:48:56 +00:00
compression.md markdownlint: enable rule MD040 2021-09-08 21:53:48 +00:00
concepts.md doc: Add concept page on submitting I/O to an NVMe device 2019-05-09 04:33:19 +00:00
concurrency.md markdownlint: enable rule MD046 2021-09-08 21:53:48 +00:00
containers.md doc/container: display spdk-docker-suite in doc 2022-03-09 08:01:38 +00:00
distributions.md doc: Add page describing OS distros used by the CI 2021-09-20 10:48:56 +00:00
Doxyfile doc: do not document void returns 2021-12-02 15:41:33 +00:00
driver_modules.md doc: add IDXD docs and changelog entry 2020-04-23 15:48:32 +00:00
event.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
footer.html doc: simplify HTML header and stylesheet 2017-04-28 13:13:48 -07:00
ftl.md markdownlint: enable rule MD046 2021-09-08 21:53:48 +00:00
gdb_macros.md spelling: doc 2021-11-30 09:05:19 +00:00
general.md doc: added scheduler framework documentation 2021-01-29 18:21:13 +00:00
getting_started.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
header.html doc: Remove mobile responsiveness 2018-12-10 15:56:50 +00:00
idxd.md idxd: Remove public API support for batching 2022-01-19 08:49:25 +00:00
index.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
intro.md deprecation: add a file to gather all deprecation notices 2021-04-26 06:55:03 +00:00
ioat.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
iscsi.md spelling: doc 2021-11-30 09:05:19 +00:00
jsonrpc_proxy.md markdownlint: enable rule MD040 2021-09-08 21:53:48 +00:00
jsonrpc.md nvmf/vfio-user: support shadow doorbells 2022-04-21 08:12:29 +00:00
libraries.md spelling: doc 2021-11-30 09:05:19 +00:00
lvol.md markdownlint: enable rule MD040 2021-09-08 21:53:48 +00:00
Makefile doc/Makefile: include mk/spdk.common.mk 2018-06-19 17:29:06 +00:00
memory.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
misc.md doc/rpms: add reference to rpms doc page 2021-06-22 23:47:52 +00:00
notify.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
nvme_spec.md doc: correct explanation of NVMe SQ command submission 2021-01-25 12:52:08 +00:00
nvme.md markdownlint: enable rule MD040 2021-09-08 21:53:48 +00:00
nvmf_tgt_pg.md lib/nvmf: remove deprecated API 2021-03-18 14:43:08 +00:00
nvmf_tracing.md nvmf_tracing.md: explain how extended -e option works 2022-01-05 08:52:40 +00:00
nvmf.md doc/nvmf: Update nvmf_create_transport example 2022-02-28 11:06:32 +00:00
overview.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
peer_2_peer.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
performance_reports.md doc: add SPDK 22.01 Bdev PCIe Gen4 Performance Report link 2022-04-08 06:47:39 +00:00
pkgconfig.md markdownlint: enable rule MD040 2021-09-08 21:53:48 +00:00
porting.md markdownlint: enable rule MD046 2021-09-08 21:53:48 +00:00
prog_guides.md doc/notify: add missing links about notify 2019-05-07 06:11:45 +00:00
README.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
rpm.md doc/rpm: Add information about new functionality 2022-01-05 09:24:59 +00:00
scheduler.md docs: update scheduler documentation 2022-03-17 17:41:51 +00:00
shfmt.md doc/shfmt: Add note about minimal version of Bash 2021-11-10 23:11:41 +00:00
spdk_top.md markdownlint: enable rule MD032 2021-08-26 19:27:22 +00:00
spdkcli.md markdownlint: enable rule MD006 2021-08-05 07:42:35 +00:00
ssd_internals.md doc: Rename directory_structure.md to overview.md 2019-05-09 04:33:19 +00:00
stylesheet.css doc: Remove mobile responsiveness 2018-12-10 15:56:50 +00:00
system_configuration.md spelling: doc 2021-11-30 09:05:19 +00:00
template_pg.md spelling: doc 2021-11-30 09:05:19 +00:00
tools.md test: remove spdk/nvme-cli references 2021-01-04 16:28:01 +00:00
two.min.js doc: Add license header to two.js source 2018-08-06 16:27:58 +00:00
usdt.md markdownlint: enable rule MD040 2021-09-08 21:53:48 +00:00
user_guides.md doc: add a page for USDT 2021-06-08 08:27:15 +00:00
userspace.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
vagrant.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
vhost_processing.md markdownlint: enable rule MD040 2021-09-08 21:53:48 +00:00
vhost.md doc/vhost: remove vhost-nvme description 2021-12-23 08:33:24 +00:00
virtio.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00
vmd.md markdownlint: enable rule MD025 2021-08-26 19:27:22 +00:00

SPDK Documentation

The current version of the SPDK documentation can be found online at http://www.spdk.io/doc/

Building the Documentation

To convert the documentation into HTML run make in the doc directory. The output will be located in doc/output/html. Before running make ensure all pre-requisites are installed. See Installing Prerequisites for more details.