vfio: map contiguous areas in one go
authorAnatoly Burakov <anatoly.burakov@intel.com>
Tue, 25 Feb 2020 13:24:48 +0000 (13:24 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Fri, 27 Mar 2020 09:09:22 +0000 (10:09 +0100)
commitd1c7c0cdf7bac5eb40d3a2a690453aefeee5887b
tree87efe89744e3bf49c715b1c8e2614a13b654a5b7
parentbcf789da7335b80e792ba926b5a95a12fa2e1e9a
vfio: map contiguous areas in one go

Currently, when we are creating DMA mappings for memory that's
either external or is backed by hugepages in IOVA as PA mode, we
assume that each page is necessarily discontiguous. This may not
actually be the case, especially for external memory, where the
user is able to create their own IOVA table and make it
contiguous. This is a problem because VFIO has a limited number
of DMA mappings, and it does not appear to concatenate them and
treats each mapping as separate, even when they cover adjacent
areas.

Fix this so that we always map contiguous memory in a single
chunk, as opposed to mapping each segment separately.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Ray Kinsella <ray.kinsella@intel.com>
lib/librte_eal/linux/eal/eal_vfio.c