vfio: honor IOVA mode before mapping
Check iova mode and accordingly map iova to pa or va. Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> Tested-by: Hemant Agrawal <hemant.agrawal@nxp.com>
This commit is contained in:
parent
cf408c2247
commit
e85a919286
@ -706,7 +706,10 @@ vfio_type1_dma_map(int vfio_container_fd)
|
||||
dma_map.argsz = sizeof(struct vfio_iommu_type1_dma_map);
|
||||
dma_map.vaddr = ms[i].addr_64;
|
||||
dma_map.size = ms[i].len;
|
||||
dma_map.iova = ms[i].phys_addr;
|
||||
if (rte_eal_iova_mode() == RTE_IOVA_VA)
|
||||
dma_map.iova = dma_map.vaddr;
|
||||
else
|
||||
dma_map.iova = ms[i].phys_addr;
|
||||
dma_map.flags = VFIO_DMA_MAP_FLAG_READ | VFIO_DMA_MAP_FLAG_WRITE;
|
||||
|
||||
ret = ioctl(vfio_container_fd, VFIO_IOMMU_MAP_DMA, &dma_map);
|
||||
@ -792,7 +795,10 @@ vfio_spapr_dma_map(int vfio_container_fd)
|
||||
dma_map.argsz = sizeof(struct vfio_iommu_type1_dma_map);
|
||||
dma_map.vaddr = ms[i].addr_64;
|
||||
dma_map.size = ms[i].len;
|
||||
dma_map.iova = ms[i].phys_addr;
|
||||
if (rte_eal_iova_mode() == RTE_IOVA_VA)
|
||||
dma_map.iova = dma_map.vaddr;
|
||||
else
|
||||
dma_map.iova = ms[i].phys_addr;
|
||||
dma_map.flags = VFIO_DMA_MAP_FLAG_READ |
|
||||
VFIO_DMA_MAP_FLAG_WRITE;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user