> From: Jason Gunthorpe <jgg@xxxxxxxxxx> > Sent: Monday, November 23, 2020 7:30 PM > > On Mon, Nov 23, 2020 at 10:24:00AM +0200, Leon Romanovsky wrote: > > From: Parav Pandit <parav@xxxxxxxxxx> > > > > DMA operation of the IB device is done using ib_device->dma_device. > > This is well abstracted using ib_dma APIs. > > > > Hence, instead of doing open access to parent device, use IB core > > provided dma mapping APIs. > > Why? > > The ib DMA APIs are for people using verbs, they are only needed to pack things > into the ib_sge > > If you are inside a driver, not using the verbs API, or not using ib_sge, then you > should not be using the ib_dma API > Thanks for clarifying this. Using ib_dma apis make the code clear for dma device access clear and explicit. > It is an abberation, we should minimize its use. Alright. In that case will use the pci_dev as mlx5 driver internally has the knowledge of it and avoid using ib_dma APIs. > > > /* > > - * We can't use an array for xlt_emergency_page because > > dma_map_single doesn't > > + * We can't use an array for xlt_emergency_page because > > + ib_dma_map_single doesn't > > * work on kernel modules memory > > */ > > void *xlt_emergency_page; > > @@ -1081,7 +1081,6 @@ static void *mlx5_ib_create_xlt_wr(struct > mlx5_ib_mr *mr, > > unsigned int flags) > > { > > struct mlx5_ib_dev *dev = mr->dev; > > - struct device *ddev = dev->ib_dev.dev.parent; > > Though this looks wrong, it should be dev->mdev->pdev.dev > > ie it is always OK to use a PCI device with the normal DMA API > Ok. will send v2 that uses pci device with existing DMA APIs.