Spdk/lib
Darek Stojaczyk be04cfc342 env_dpdk/memory: aggregate adjacent vfio mappings
In the past, memory in spdk could have been unregistered in
different chunks than it was registered, so to account
for that the vtophys code used to register each hugepage
(2MB chunk of memory) separately to the VFIO driver. This
really made the code generally simple.

Now that memory in spdk can only be unregistered in the same
chunks it was registered in, we no longer have to register
each hugepage to VFIO separately. We could register the
entire memory region with just a single VFIO ioctl instead,
so that's we'll do now.

This serves as an optimization as we obviously send less
ioctls now, but most importantly it prevents SPDK from
reaching a VFIO registrations limit that was introduced
in Linux 5.1. [1]

The default limit is 65535, which results in SPDK being able to
make only the first 128GB of memory DMA-able. This is most
problematic for vhost where we need to register the memory
of all the VMs.

Fixes #915

[1] 492855939bdb59c6f947b0b5b44af9ad82b7e38c
("vfio/type1: Limit DMA mappings per container")

Change-Id: Ida40306b2684e20daa2fd8d12e0df2eef5a4bff1
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/432442
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2019-08-30 19:41:49 +00:00
..
bdev bdev/part: remove thread safety from part_construct() 2019-08-30 15:48:02 +00:00
blob lib/blob: move bdev subdir under module directory. 2019-08-22 16:29:49 +00:00
blobfs blobfs: use __wake_caller() to wake up the caller 2019-08-14 21:41:36 +00:00
conf string: spdk_strtol to delegate additional error checking 2019-01-29 00:10:57 +00:00
copy lib/copy: move ioat subdir to module directory. 2019-08-22 16:29:49 +00:00
env_dpdk env_dpdk/memory: aggregate adjacent vfio mappings 2019-08-30 19:41:49 +00:00
env_ocf lib/mk: update OCF build. 2019-08-27 18:49:56 +00:00
event lib/event: remove app.c dependency from loading json_config 2019-08-28 15:26:12 +00:00
ftl lib/ftl: IO channel handling for nv cache 2019-08-29 18:10:19 +00:00
ioat ioat: allocate device struct using regular calloc 2019-04-09 06:30:42 +00:00
iscsi iscsi: Restore the previous bug fix for LUN hot plug 2019-08-23 18:09:16 +00:00
json json_util: fix typo in debug message. 2019-05-31 14:39:53 +00:00
jsonrpc jsonrpc: tolerate null json value for parameters in json-rpc call 2019-07-26 19:30:57 +00:00
log mk: move log_rpc from inside log 2019-08-15 20:32:28 +00:00
log_rpc mk: move log_rpc from inside log 2019-08-15 20:32:28 +00:00
lvol lvol: Fix for lvol failed deletion flow 2019-04-02 19:23:22 +00:00
nbd nbd/rpc: Add logs with more information about rpc error. 2019-08-14 22:11:40 +00:00
net net/rpc: Add logs with more information about rpc error. 2019-08-05 06:14:58 +00:00
notify lib: move notify_rpc under lib/notify 2019-08-19 06:10:30 +00:00
nvme nvme/tcp: Change hdr in nvme_tcp_pdu to pointer 2019-08-28 15:38:02 +00:00
nvmf nvmf/rdma: Pass nvmf_request to nvmf_rdma_fill_buffers 2019-08-30 16:56:46 +00:00
reduce lib/reduce: enable deletion of a vol w/o a pmem file 2019-08-22 04:31:46 +00:00
rocksdb RocksDB: Remove static and assert for SpdkInitializeThread 2019-07-05 04:19:11 +00:00
rpc lib/rpc: Add include_aliases flag to rpc_get_methods implementation. 2019-08-28 15:19:17 +00:00
scsi scsi: fail invalid MODE_SELECT requests 2019-08-05 23:15:08 +00:00
sock lib/sock: move subdirs to module/sock 2019-08-22 16:29:49 +00:00
thread thread: Assign not pointer but instance of spdk_cpuset in struct spdk_thread 2019-07-04 00:30:22 +00:00
trace lib: move trace_rpc into lib/trace 2019-08-19 06:10:30 +00:00
ut_mock thread: Eliminate use of pthread_self and thread_ids 2019-01-15 16:53:12 +00:00
util dif: Add spdk_dix_remap_ref_tag to remap ref. tag for separate metadata payload 2019-07-11 11:14:22 +00:00
vhost vhost: remove session type checks 2019-08-26 17:24:04 +00:00
virtio lib/virtio: change the definition of cookie 2019-06-26 08:03:37 +00:00
vmd lib/vmd: check header_type after the vmd_adapter structure is verified 2019-07-23 19:55:04 +00:00
Makefile mk: standardize DIRS-x assignments. 2019-08-29 20:16:18 +00:00