Spdk/scripts
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
..
bash-completion scripts/bash-completion: Use default filename completion for ./configure 2021-12-14 09:09:24 +00:00
bpf scripts/bpf: remove bdev_nvme_destroy_qpair probe 2022-04-20 08:20:02 +00:00
ceph spelling: scripts 2021-12-03 08:13:04 +00:00
perf scripts: fix PYTHONPATH references to scripts/ directory 2022-04-18 17:22:09 +00:00
pkgdep pkgdep: add python3-devel dependency 2022-03-08 07:54:23 +00:00
vagrant scripts/vagrant: add missing Fedora 35 image name 2022-04-13 14:41:49 +00:00
arm_cross_compile.sh scripts: ARM64 Cross-Compilation Support 2021-09-09 20:26:59 +00:00
bpftrace.sh scripts/bpftrace: use SO names in bpftrace scripts 2021-10-20 23:39:59 +00:00
check_format.sh check_format.sh: handle spdk_ functions that are moved 2022-01-06 16:05:53 +00:00
common.sh scripts/common: set special name to test partitions 2022-01-26 19:07:43 +00:00
core-collector.sh scripts/core-collector: Don't limit core dump collection 2022-01-05 09:24:22 +00:00
detect_cc.sh check_format: Reformat the Bash code in compliance with shfmt 2020-05-07 20:52:21 +00:00
dpdk_mem_info.py scripts: add a parser for the dpdk memory stats. 2020-01-24 05:46:43 +00:00
eofnl scripts/check_format: check trailing whitespace 2017-10-24 17:35:23 -04:00
fio-wrapper test/nvmf: enable fio verify_backlog option 2022-02-04 21:58:18 +00:00
gdb_macros.py scripts: Use range instead of xrange 2019-02-13 22:54:15 +00:00
gen_ftl.sh check_format: Reformat the Bash code in compliance with shfmt 2020-05-07 20:52:21 +00:00
gen_nvme.sh scripts/gen_nvme.sh: add option for remote bdev JSON configuration 2021-09-24 07:39:41 +00:00
genconfig.py genconfig.py: allow numbers in config option names 2020-02-20 14:40:19 +00:00
get-pmr pkgdep/git: Bump vanilla qemu to v6.0.0 2021-05-11 11:51:01 +00:00
histogram.py histograms: add script for parsing histogram data 2019-01-24 14:14:32 +00:00
iostat.py scripts: move python modules to python directory 2022-04-05 14:40:47 +00:00
lspci scripts/rpc: option to format framework_get_pci_devices for use with lspci 2021-12-14 09:08:59 +00:00
pc_libs.sh build: generate pkg-config files for SPDK 2021-01-21 09:46:32 +00:00
pc_modules.sh build: generate pkg-config files for SPDK 2021-01-21 09:46:32 +00:00
pc.sh build: install generated pkg-config files 2021-03-17 11:10:45 +00:00
pkgdep.sh pkgdep: Fix ID lookup 2021-11-18 08:17:50 +00:00
posix.txt build: Automatically detect use of POSIX includes 2017-05-08 13:20:37 -07:00
prep_benchmarks.sh check_format: Reformat the Bash code in compliance with shfmt 2020-05-07 20:52:21 +00:00
qat_setup.sh qat_setup: Don't use absolute path to igb_uio driver 2021-12-02 08:08:10 +00:00
rpc_http_proxy.py scripts: move python modules to python directory 2022-04-05 14:40:47 +00:00
rpc.py nvmf/vfio-user: support shadow doorbells 2022-04-21 08:12:29 +00:00
rxe_cfg_small.sh test/nvmf: Use rxe_cfg to get rxe-enabled net devices 2021-04-12 09:41:20 +00:00
setup.sh scripts/setup: Skip devices which have any valid data present 2022-04-06 07:21:17 +00:00
spdk-gpt.py scripts/spdk-gpt: Fix path lookup of the target device 2022-01-25 08:13:40 +00:00
spdkcli.py scripts: move python modules to python directory 2022-04-05 14:40:47 +00:00
sync_dev_uevents.sh sync_dev_uevents: Break from the loop if kernel seqnum matches mdev's 2021-02-04 16:10:49 +00:00