numam-spdk/lib
Darek Stojaczyk f666018041 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")

Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/432442 (master)

(cherry picked from commit be04cfc342)
Change-Id: Ida40306b2684e20daa2fd8d12e0df2eef5a4bff1
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467143
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2019-09-09 21:55:22 +00:00
..
bdev bdev: fix error path for allocating qos paramters 2019-09-09 21:55:22 +00:00
blob lib/blob: move bdev subdir under module directory. 2019-09-06 02:19:41 +00:00
blobfs blobfs: make internal asynchronous APIs as public APIs 2019-06-28 09:50:50 +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-09-06 02:19:41 +00:00
env_dpdk env_dpdk/memory: aggregate adjacent vfio mappings 2019-09-09 21:55:22 +00:00
env_ocf lib/mk: update OCF build. 2019-09-06 02:19:41 +00:00
event lib/event: move rpc and subsystems dirs to module 2019-09-06 02:19:41 +00:00
ftl lib/ftl: Fix padding size calculation 2019-09-09 21:55:22 +00:00
ioat ioat: allocate device struct using regular calloc 2019-04-09 06:30:42 +00:00
iscsi mk: add a lib deps file. 2019-09-06 02:19:41 +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-09-06 02:19:41 +00:00
log_rpc mk: move log_rpc from inside log 2019-09-06 02:19:41 +00:00
lvol lvol: Fix for lvol failed deletion flow 2019-04-02 19:23:22 +00:00
nbd jsonrpc: don't check returned value from spdk_jsonrpc_begin_result() 2019-07-22 05:13:30 +00:00
net jsonrpc: don't check returned value from spdk_jsonrpc_begin_result() 2019-07-22 05:13:30 +00:00
notify lib: move notify_rpc under lib/notify 2019-09-06 02:19:41 +00:00
nvme nvme: fix WRITE_TO_RO_RANGE status code 2019-09-09 21:55:22 +00:00
nvmf nvmf/rdma: Fix data WR release 2019-09-09 21:55:22 +00:00
reduce lib/reduce: change and move the max IOVEC define for reduce 2019-07-29 04:36:59 +00:00
rocksdb RocksDB: Remove static and assert for SpdkInitializeThread 2019-07-05 04:19:11 +00:00
rpc jsonrpc: don't check returned value from spdk_jsonrpc_begin_result() 2019-07-22 05:13:30 +00:00
scsi scsi: remove bdev_scsi_mode_select_page() 2019-07-26 04:14:59 +00:00
sock sock: Add the code to free the entry 2019-09-09 04:42:54 +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-09-06 02:19:41 +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 jsonrpc: don't check returned value from spdk_jsonrpc_begin_result() 2019-07-22 05:13:30 +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 lib/mk: update OCF build. 2019-09-06 02:19:41 +00:00