RE: Support SVM without PASID

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: valmiki [mailto:valmikibow@xxxxxxxxx]
> Sent: Saturday, August 12, 2017 8:11 PM
> 
> On 8/7/2017 4:01 PM, Jean-Philippe Brucker wrote:
> > On 05/08/17 06:14, valmiki wrote:
> > [...]
> >> Hi Jean, Thanks a lot, now i understood the flow. From vfio kernel
> >> documentation we fill vaddr and iova in struct
> vfio_iommu_type1_dma_map
> >> and pass them to VFIO. But if we use dynamic allocation in application
> >> (say malloc), do we need to use dma API to get iova and then call
> >> VFIO_IOMMU_MAP ioctl ?
> >> If application needs multiple such dynamic allocations, then it need to
> >> allocate large chunk and program it via VFIO_IOMMU_MAP ioctl and
> then
> >> manage rest allocations requirements from this buffer ?
> >
> > Yes, without SVM, the application allocates large buffers, allocates IOVAs
> > itself, and maps them with VFIO_IOMMU_MAP. Userspace doesn't rely
> on the
> > DMA API at all, it manages IOVAs as it wants. Sizes passed to
> > VFIO_IOMMU_MAP have to be multiples of the MMU or IOMMU page
> granularity
> > (that is at least 4kB), and both iova and vaddr have to be aligned on that
> > granularity as well. So malloc isn't really suitable in this case, you'll
> > need mmap. The application can then implement a small allocator to
> manage
> > the DMA pool created with VFIO_IOMMU_MAP.
> 
> Thanks Jean, I have a confusion allocate IOVA's in userspace means, how
> can user application decide IOVA address, can user application pick any
> random IOVA address ?
> 

yes, any address. In this mode the whole IOVA address space is owned
by application, which just needs to use VFIO_IOMMU_MAP to setup
IOVA->PA mapping in IOMMU (As Jean pointed out, input paramters
are iova and vaddr. VFIO will figure out pa corresponding to vaddr).

Thanks
Kevin



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux