xitilin 发表于 2023-04-11 20:52

如何rdma网卡使用iommu生成的iova进行DMA?

我已经在物理机开启了IOMMU。我期望在开启IOMMU后,RDMA网卡使用IOMMU模块分配的IOVA进行DMA。但实际上,RDMA网卡并没有使用IOVA进行DMA:

通过阅读内核源代码,我发现在ib_umem_get中调用ib_dma_map_sgtable_attrs()函数以获取每个scatterlist(sg)条目的DMA地址。在获取DMA地址的过程中,它首先检查dev->ops是否为空,然后决定是否将DMA地址分配给IOVA。目前调试结果显示,在这一点上dev->ops为空,DMA地址没有分配给IOVA。
当获取struct device *dev以便使用IOMMU时,mlx5驱动是否执行其他操作(例如分配dev->ops)?
页: [1]
查看完整版本: 如何rdma网卡使用iommu生成的iova进行DMA?