Session

Optimization of IOMMU DMA allocation and mapping

Currently the DMA mapping operation performs two steps in a function at one time: allocates IOVA space and actually maps DMA pages to that IOVA space. This one-shot operation works perfectly for non-complex scenarios, where callers use that DMA API in control path when they setup hardware.
The existing IOMMU DMA mapping operation is performed in two steps at the same time (one-shot):
1. Allocates IOVA space.
2. Actually maps DMA pages to that space.
For example, map scatter-gather list:
dma_map_sg_attrs()
__dma_map_sg_attrs
ops->map_sg()
iommu_dma_map_sg()
Calculate length of IOVA space that is needed
/* ####### step one allocate IOVA space ####### */
iommu_dma_alloc_iova()
/* ####### step two actually map DMA Pages ####### */
iommu_map_sg()
for each entry in sg list()
__iommu_map()
iommu_domain_ops->map_pages()
This one-shot operation works perfectly for non-complex scenarios where callers use the existing DMA API in the control path when they setup hardware.

Yanjun zhu

Engingeer/RDMA supporter

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top