vfio: fix DMA mapping granularity for IOVA as VA
authorNithin Dabilpuram <ndabilpuram@marvell.com>
Fri, 15 Jan 2021 07:32:42 +0000 (13:02 +0530)
committerDavid Marchand <david.marchand@redhat.com>
Mon, 1 Mar 2021 10:58:28 +0000 (11:58 +0100)
commitc13ca4e81cac591904c893a65ffbbf446af0268a
tree58d80e13f57405462368a988b6521c9ab0a15095
parent016763c219580292c8b05059c7452a7a11d0d19e
vfio: fix DMA mapping granularity for IOVA as VA

Partial unmapping is not supported for VFIO IOMMU type1
by kernel. Though kernel gives return as zero, the unmapped size
returned will not be same as expected. So check for
returned unmap size and return error.

For IOVA as PA, DMA mapping is already at memseg size
granularity. Do the same even for IOVA as VA mode as
DMA map/unmap triggered by heap allocations,
maintain granularity of memseg page size so that heap
expansion and contraction does not have this issue.

For user requested DMA map/unmap disallow partial unmapping
for VFIO type1.

Fixes: 73a639085938 ("vfio: allow to map other memory regions")
Cc: stable@dpdk.org
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Christensen <drc@linux.vnet.ibm.com>
lib/librte_eal/linux/eal_vfio.c
lib/librte_eal/linux/eal_vfio.h