RE: [PATCH rdma-next] IB/mlx5: Use ib_dma APIs instead of open access to parent device

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

 




> 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.




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux