Infiniband Subsystem: Remove pci-dma-compat wrapper APIs.
Subsystems (5)
cover Infiniband Subsystem: Remove pci-dma-compat wrapper APIs.
Hii Developers,
This patch series will replace all the legacy pci-dma-compat wrappers
with the dma-mapping APIs directly in the INFINIBAND Subsystem.
This task is done through a coccinelle script which is described in each commit message.
The changes are compile tested.
Thanks,
Suraj Upadhyay.
Suraj Upadhyay (4):
IB/hfi1: Remove pci-dma-compat wrapper APIs
IB/mthca: Remove pci-dma-compat wrapper APIs
RDMA/qib: Remove pci-dma-compat wrapper APIs
RDMA/pvrdma: Remove pci-dma-compat wrapper APIs
drivers/infiniband/hw/hfi1/pcie.c | 8 +++---- drivers/infiniband/hw/hfi1/user_exp_rcv.c | 13 +++++------ drivers/infiniband/hw/mthca/mthca_eq.c | 21 +++++++++-------- drivers/infiniband/hw/mthca/mthca_main.c | 8 +++---- drivers/infiniband/hw/mthca/mthca_memfree.c | 23 +++++++++++-------- drivers/infiniband/hw/qib/qib_file_ops.c | 12 +++++----- drivers/infiniband/hw/qib/qib_init.c | 4 ++-- drivers/infiniband/hw/qib/qib_pcie.c | 8 +++---- drivers/infiniband/hw/qib/qib_user_pages.c | 12 +++++----- .../infiniband/hw/vmw_pvrdma/pvrdma_main.c | 6 ++--- 10 files changed, 59 insertions(+), 56 deletions(-)
Signature · 1 line
2.17.1
PATCH 1/4 IB/hfi1: Remove pci-dma-compat wrapper APIs
The legacy API wrappers in include/linux/pci-dma-compat.h should go away as it creates unnecessary midlayering for include/linux/dma-mapping.h APIs.
Instead use dma-mapping.h APIs directly.
The patch has been generated with the coccinelle script below and compile-tested.
@@@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL
@@@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE
@@@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE
@@@@
- PCI_DMA_NONE
+ DMA_NONE
@@ expression E1, E2, E3; @@
- pci_alloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3; @@
- pci_zalloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3, E4; @@
- pci_free_consistent(E1, E2, E3, E4)
+ dma_free_coherent(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_single(E1, E2, E3, E4)
+ dma_map_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_single(E1, E2, E3, E4)
+ dma_unmap_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4, E5; @@
- pci_map_page(E1, E2, E3, E4, E5)
+ dma_map_page(&E1->dev, E2, E3, E4, E5)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_page(E1, E2, E3, E4)
+ dma_unmap_page(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_sg(E1, E2, E3, E4)
+ dma_map_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_sg(E1, E2, E3, E4)
+ dma_unmap_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_cpu(E1, E2, E3, E4)
+ dma_sync_single_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_device(E1, E2, E3, E4)
+ dma_sync_single_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_cpu(E1, E2, E3, E4)
+ dma_sync_sg_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_device(E1, E2, E3, E4)
+ dma_sync_sg_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2; @@
- pci_dma_mapping_error(E1, E2)
+ dma_mapping_error(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_consistent_dma_mask(E1, E2)
+ dma_set_coherent_mask(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_dma_mask(E1, E2)
+ dma_set_mask(&E1->dev, E2)
--- drivers/infiniband/hw/hfi1/pcie.c | 8 ++++---- drivers/infiniband/hw/hfi1/user_exp_rcv.c | 13 ++++++------- 2 files changed, 10 insertions(+), 11 deletions(-)
drivers/infiniband/hw/hfi1/pcie.c +4 -4
@@ -92,21 +92,21 @@ int hfi1_pcie_init(struct hfi1_devdata *dd) goto bail; } - ret =pci_set_dma_mask (pdev,DMA_BIT_MASK (64 )); + ret =dma_set_mask (&pdev->dev,DMA_BIT_MASK (64 ));if (ret) {/* * If the 64 bit setup fails, try 32 bit. Some systems * do not setup 64 bit maps on systems with 2GB or less * memory installed. */ - ret =pci_set_dma_mask (pdev,DMA_BIT_MASK (32 )); + ret =dma_set_mask (&pdev->dev,DMA_BIT_MASK (32 ));if (ret) {dd_dev_err (dd,"Unable to set DMA mask: %d\n" , ret); goto bail; } - ret =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (32 )); + ret =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (32 )); }else { - ret =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (64 )); + ret =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 )); }if (ret) {dd_dev_err (dd,"Unable to set DMA consistent mask: %d\n" , ret);
drivers/infiniband/hw/hfi1/user_exp_rcv.c +6 -7
@@ -175,8 +175,8 @@ static void unpin_rcv_pages(struct hfi1_filedata *fd,struct hfi1_devdata *dd = fd->uctxt->dd;if (mapped) { -pci_unmap_single (dd->pcidev, node->dma_addr, - node->npages *PAGE_SIZE ,PCI_DMA_FROMDEVICE ); +dma_unmap_single (&dd->pcidev->dev, node->dma_addr, + node->npages *PAGE_SIZE ,DMA_FROM_DEVICE ); pages = &node->pages[idx]; }else { pages = &tidbuf->pages[idx];
@@ -735,9 +735,8 @@ static int set_rcvarray_entry(struct hfi1_filedata *fd,if (!node)return -ENOMEM ; - phys =pci_map_single (dd->pcidev, -__va (page_to_phys (pages[0 ])), - npages *PAGE_SIZE ,PCI_DMA_FROMDEVICE ); + phys =dma_map_single (&dd->pcidev->dev,__va (page_to_phys (pages[0 ])), + npages *PAGE_SIZE ,DMA_FROM_DEVICE );if (dma_mapping_error (&dd->pcidev->dev, phys)) {dd_dev_err (dd,"Failed to DMA map Exp Rcv pages 0x%llx\n" , phys);
@@ -779,8 +778,8 @@ static int set_rcvarray_entry(struct hfi1_filedata *fd,hfi1_cdbg (TID ,"Failed to insert RB node %u 0x%lx, 0x%lx %d" , node->rcventry, node->notifier.interval_tree.start, node->phys, ret); -pci_unmap_single (dd->pcidev, phys, npages *PAGE_SIZE , -PCI_DMA_FROMDEVICE ); +dma_unmap_single (&dd->pcidev->dev, phys, npages *PAGE_SIZE , +DMA_FROM_DEVICE );kfree (node);return -EFAULT ; }
Signature · 1 line
2.17.1
PATCH 2/4 IB/mthca: Remove pci-dma-compat wrapper APIs
In reply to Suraj UpadhyayThe legacy API wrappers in include/linux/pci-dma-compat.h should go away as it creates unnecessary midlayering for include/linux/dma-mapping.h APIs.
Instead use dma-mapping.h APIs directly.
The patch has been generated with the coccinelle script below and compile-tested.
@@@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL
@@@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE
@@@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE
@@@@
- PCI_DMA_NONE
+ DMA_NONE
@@ expression E1, E2, E3; @@
- pci_alloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3; @@
- pci_zalloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3, E4; @@
- pci_free_consistent(E1, E2, E3, E4)
+ dma_free_coherent(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_single(E1, E2, E3, E4)
+ dma_map_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_single(E1, E2, E3, E4)
+ dma_unmap_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4, E5; @@
- pci_map_page(E1, E2, E3, E4, E5)
+ dma_map_page(&E1->dev, E2, E3, E4, E5)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_page(E1, E2, E3, E4)
+ dma_unmap_page(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_sg(E1, E2, E3, E4)
+ dma_map_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_sg(E1, E2, E3, E4)
+ dma_unmap_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_cpu(E1, E2, E3, E4)
+ dma_sync_single_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_device(E1, E2, E3, E4)
+ dma_sync_single_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_cpu(E1, E2, E3, E4)
+ dma_sync_sg_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_device(E1, E2, E3, E4)
+ dma_sync_sg_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2; @@
- pci_dma_mapping_error(E1, E2)
+ dma_mapping_error(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_consistent_dma_mask(E1, E2)
+ dma_set_coherent_mask(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_dma_mask(E1, E2)
+ dma_set_mask(&E1->dev, E2)
--- drivers/infiniband/hw/mthca/mthca_eq.c | 21 ++++++++++--------- drivers/infiniband/hw/mthca/mthca_main.c | 8 +++---- drivers/infiniband/hw/mthca/mthca_memfree.c | 23 ++++++++++++--------- 3 files changed, 28 insertions(+), 24 deletions(-)
drivers/infiniband/hw/mthca/mthca_eq.c +11 -10
@@ -617,9 +617,9 @@ static void mthca_free_eq(struct mthca_dev *dev,mthca_free_mr (dev, &eq->mr);for (i =0 ; i < npages; ++i) -pci_free_consistent (dev->pdev,PAGE_SIZE , - eq->page_list[i].buf, -dma_unmap_addr (&eq->page_list[i], mapping)); +dma_free_coherent (&dev->pdev->dev,PAGE_SIZE , + eq->page_list[i].buf, +dma_unmap_addr (&eq->page_list[i], mapping));kfree (eq->page_list);mthca_free_mailbox (dev, mailbox);
@@ -739,17 +739,18 @@ int mthca_map_eq_icm(struct mthca_dev *dev, u64 icm_virt) dev->eq_table.icm_page =alloc_page (GFP_HIGHUSER );if (!dev->eq_table.icm_page)return -ENOMEM ; - dev->eq_table.icm_dma =pci_map_page (dev->pdev, dev->eq_table.icm_page,0 , -PAGE_SIZE ,PCI_DMA_BIDIRECTIONAL ); -if (pci_dma_mapping_error (dev->pdev, dev->eq_table.icm_dma)) { + dev->eq_table.icm_dma =dma_map_page (&dev->pdev->dev, + dev->eq_table.icm_page,0 , +PAGE_SIZE ,DMA_BIDIRECTIONAL ); +if (dma_mapping_error (&dev->pdev->dev, dev->eq_table.icm_dma)) {__free_page (dev->eq_table.icm_page);return -ENOMEM ; } ret =mthca_MAP_ICM_page (dev, dev->eq_table.icm_dma, icm_virt);if (ret) { -pci_unmap_page (dev->pdev, dev->eq_table.icm_dma,PAGE_SIZE , -PCI_DMA_BIDIRECTIONAL ); +dma_unmap_page (&dev->pdev->dev, dev->eq_table.icm_dma, +PAGE_SIZE ,DMA_BIDIRECTIONAL );__free_page (dev->eq_table.icm_page); }
@@ -759,8 +760,8 @@ int mthca_map_eq_icm(struct mthca_dev *dev, u64 icm_virt)void mthca_unmap_eq_icm (struct mthca_dev *dev) {mthca_UNMAP_ICM (dev, dev->eq_table.icm_virt,1 ); -pci_unmap_page (dev->pdev, dev->eq_table.icm_dma,PAGE_SIZE , -PCI_DMA_BIDIRECTIONAL ); +dma_unmap_page (&dev->pdev->dev, dev->eq_table.icm_dma,PAGE_SIZE , +DMA_BIDIRECTIONAL );__free_page (dev->eq_table.icm_page); }
drivers/infiniband/hw/mthca/mthca_main.c +4 -4
@@ -937,20 +937,20 @@ static int __mthca_init_one(struct pci_dev *pdev, int hca_type)pci_set_master (pdev); - err =pci_set_dma_mask (pdev,DMA_BIT_MASK (64 )); + err =dma_set_mask (&pdev->dev,DMA_BIT_MASK (64 ));if (err) {dev_warn (&pdev->dev,"Warning: couldn't set 64-bit PCI DMA mask.\n" ); - err =pci_set_dma_mask (pdev,DMA_BIT_MASK (32 )); + err =dma_set_mask (&pdev->dev,DMA_BIT_MASK (32 ));if (err) {dev_err (&pdev->dev,"Can't set PCI DMA mask, aborting.\n" ); goto err_free_res; } } - err =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (64 )); + err =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 ));if (err) {dev_warn (&pdev->dev,"Warning: couldn't set 64-bit " "consistent PCI DMA mask.\n" ); - err =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (32 )); + err =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (32 ));if (err) {dev_err (&pdev->dev,"Can't set consistent PCI DMA mask, " "aborting.\n" );
drivers/infiniband/hw/mthca/mthca_memfree.c +13 -10
@@ -66,8 +66,8 @@ static void mthca_free_icm_pages(struct mthca_dev *dev, struct mthca_icm_chunk *int i;if (chunk->nsg >0 ) -pci_unmap_sg (dev->pdev, chunk->mem, chunk->npages, -PCI_DMA_BIDIRECTIONAL ); +dma_unmap_sg (&dev->pdev->dev, chunk->mem, chunk->npages, +DMA_BIDIRECTIONAL );for (i =0 ; i < chunk->npages; ++i) __free_pages(sg_page(&chunk->mem[i]),
@@ -184,9 +184,10 @@ struct mthca_icm *mthca_alloc_icm(struct mthca_dev *dev, int npages,if (coherent) ++chunk->nsg;else if (chunk->npages ==MTHCA_ICM_CHUNK_LEN ) { - chunk->nsg =pci_map_sg (dev->pdev, chunk->mem, + chunk->nsg =dma_map_sg (&dev->pdev->dev, + chunk->mem, chunk->npages, -PCI_DMA_BIDIRECTIONAL ); +DMA_BIDIRECTIONAL );if (chunk->nsg <=0 ) goto fail;
@@ -204,9 +205,8 @@ struct mthca_icm *mthca_alloc_icm(struct mthca_dev *dev, int npages, }if (!coherent && chunk) { - chunk->nsg =pci_map_sg (dev->pdev, chunk->mem, - chunk->npages, -PCI_DMA_BIDIRECTIONAL ); + chunk->nsg =dma_map_sg (&dev->pdev->dev, chunk->mem, + chunk->npages,DMA_BIDIRECTIONAL );if (chunk->nsg <=0 ) goto fail;
@@ -480,7 +480,8 @@ int mthca_map_user_db(struct mthca_dev *dev, struct mthca_uar *uar,sg_set_page (&db_tab->page[i].mem, pages[0 ],MTHCA_ICM_PAGE_SIZE , uaddr & ~PAGE_MASK ); - ret =pci_map_sg (dev->pdev, &db_tab->page[i].mem,1 ,PCI_DMA_TODEVICE ); + ret =dma_map_sg (&dev->pdev->dev, &db_tab->page[i].mem,1 , +DMA_TO_DEVICE );if (ret <0 ) {unpin_user_page (pages[0 ]); goto out;
@@ -489,7 +490,8 @@ int mthca_map_user_db(struct mthca_dev *dev, struct mthca_uar *uar, ret =mthca_MAP_ICM_page (dev,sg_dma_address (&db_tab->page[i].mem),mthca_uarc_virt (dev, uar, i));if (ret) { -pci_unmap_sg (dev->pdev, &db_tab->page[i].mem,1 ,PCI_DMA_TODEVICE ); +dma_unmap_sg (&dev->pdev->dev, &db_tab->page[i].mem,1 , +DMA_TO_DEVICE );unpin_user_page (sg_page (&db_tab->page[i].mem)); goto out; }
@@ -555,7 +557,8 @@ void mthca_cleanup_user_db_tab(struct mthca_dev *dev, struct mthca_uar *uar,for (i =0 ; i < dev->uar_table.uarc_size /MTHCA_ICM_PAGE_SIZE ; ++i) {if (db_tab->page[i].uvirt) {mthca_UNMAP_ICM (dev,mthca_uarc_virt (dev, uar, i),1 ); -pci_unmap_sg (dev->pdev, &db_tab->page[i].mem,1 ,PCI_DMA_TODEVICE ); +dma_unmap_sg (&dev->pdev->dev, &db_tab->page[i].mem,1 , +DMA_TO_DEVICE );unpin_user_page (sg_page (&db_tab->page[i].mem)); } }
Signature · 1 line
2.17.1
PATCH 3/4 RDMA/qib: Remove pci-dma-compat wrapper APIs
In reply to Suraj UpadhyayThe legacy API wrappers in include/linux/pci-dma-compat.h should go away as it creates unnecessary midlayering for include/linux/dma-mapping.h APIs.
Instead use dma-mapping.h APIs directly.
The patch has been generated with the coccinelle script below and compile-tested.
@@@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL
@@@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE
@@@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE
@@@@
- PCI_DMA_NONE
+ DMA_NONE
@@ expression E1, E2, E3; @@
- pci_alloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3; @@
- pci_zalloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3, E4; @@
- pci_free_consistent(E1, E2, E3, E4)
+ dma_free_coherent(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_single(E1, E2, E3, E4)
+ dma_map_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_single(E1, E2, E3, E4)
+ dma_unmap_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4, E5; @@
- pci_map_page(E1, E2, E3, E4, E5)
+ dma_map_page(&E1->dev, E2, E3, E4, E5)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_page(E1, E2, E3, E4)
+ dma_unmap_page(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_sg(E1, E2, E3, E4)
+ dma_map_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_sg(E1, E2, E3, E4)
+ dma_unmap_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_cpu(E1, E2, E3, E4)
+ dma_sync_single_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_device(E1, E2, E3, E4)
+ dma_sync_single_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_cpu(E1, E2, E3, E4)
+ dma_sync_sg_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_device(E1, E2, E3, E4)
+ dma_sync_sg_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2; @@
- pci_dma_mapping_error(E1, E2)
+ dma_mapping_error(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_consistent_dma_mask(E1, E2)
+ dma_set_coherent_mask(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_dma_mask(E1, E2)
+ dma_set_mask(&E1->dev, E2)
--- drivers/infiniband/hw/qib/qib_file_ops.c | 12 ++++++------ drivers/infiniband/hw/qib/qib_init.c | 4 ++-- drivers/infiniband/hw/qib/qib_pcie.c | 8 ++++---- drivers/infiniband/hw/qib/qib_user_pages.c | 12 ++++++------ 4 files changed, 18 insertions(+), 18 deletions(-)
drivers/infiniband/hw/qib/qib_file_ops.c +6 -6
@@ -429,8 +429,8 @@ static int qib_tid_update(struct qib_ctxtdata *rcd, struct file *fp, dd->f_put_tid (dd, &tidbase[tid],RCVHQ_RCV_TYPE_EXPECTED , dd->tidinvalid); -pci_unmap_page (dd->pcidev, phys,PAGE_SIZE , -PCI_DMA_FROMDEVICE ); +dma_unmap_page (&dd->pcidev->dev, phys, +PAGE_SIZE ,DMA_FROM_DEVICE ); dd->pageshadow[ctxttid + tid] =NULL ; } }
@@ -544,8 +544,8 @@ static int qib_tid_free(struct qib_ctxtdata *rcd, unsigned subctxt,*/ dd->f_put_tid (dd, &tidbase[tid],RCVHQ_RCV_TYPE_EXPECTED , dd->tidinvalid); -pci_unmap_page (dd->pcidev, phys,PAGE_SIZE , -PCI_DMA_FROMDEVICE ); +dma_unmap_page (&dd->pcidev->dev, phys,PAGE_SIZE , +DMA_FROM_DEVICE );qib_release_user_pages (&p,1 ); } }
@@ -1780,8 +1780,8 @@ static void unlock_expected_tids(struct qib_ctxtdata *rcd) phys = dd->physshadow[i]; dd->physshadow[i] = dd->tidinvalid; dd->pageshadow[i] =NULL ; -pci_unmap_page (dd->pcidev, phys,PAGE_SIZE , -PCI_DMA_FROMDEVICE ); +dma_unmap_page (&dd->pcidev->dev, phys,PAGE_SIZE , +DMA_FROM_DEVICE );qib_release_user_pages (&p,1 ); cnt++; }
drivers/infiniband/hw/qib/qib_init.c +2 -2
@@ -1335,8 +1335,8 @@ static void cleanup_device_data(struct qib_devdata *dd)for (i = ctxt_tidbase; i < maxtid; i++) {if (!tmpp[i])continue ; -pci_unmap_page (dd->pcidev, tmpd[i], -PAGE_SIZE ,PCI_DMA_FROMDEVICE ); +dma_unmap_page (&dd->pcidev->dev, tmpd[i], +PAGE_SIZE ,DMA_FROM_DEVICE );qib_release_user_pages (&tmpp[i],1 ); tmpp[i] =NULL ; }
drivers/infiniband/hw/qib/qib_pcie.c +4 -4
@@ -90,21 +90,21 @@ int qib_pcie_init(struct pci_dev *pdev, const struct pci_device_id *ent) goto bail; } - ret =pci_set_dma_mask (pdev,DMA_BIT_MASK (64 )); + ret =dma_set_mask (&pdev->dev,DMA_BIT_MASK (64 ));if (ret) {/* * If the 64 bit setup fails, try 32 bit. Some systems * do not setup 64 bit maps on systems with 2GB or less * memory installed. */ - ret =pci_set_dma_mask (pdev,DMA_BIT_MASK (32 )); + ret =dma_set_mask (&pdev->dev,DMA_BIT_MASK (32 ));if (ret) {qib_devinfo (pdev,"Unable to set DMA mask: %d\n" , ret); goto bail; } - ret =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (32 )); + ret =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (32 )); }else - ret =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (64 )); + ret =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 ));if (ret) {qib_early_err (&pdev->dev,"Unable to set DMA consistent mask: %d\n" , ret);
drivers/infiniband/hw/qib/qib_user_pages.c +6 -6
@@ -60,15 +60,15 @@ int qib_map_page(struct pci_dev *hwdev, struct page *page, dma_addr_t *daddr) {dma_addr_t phys; - phys =pci_map_page (hwdev, page,0 ,PAGE_SIZE ,PCI_DMA_FROMDEVICE ); -if (pci_dma_mapping_error (hwdev, phys)) + phys =dma_map_page (&hwdev->dev, page,0 ,PAGE_SIZE ,DMA_FROM_DEVICE ); +if (dma_mapping_error (&hwdev->dev, phys))return -ENOMEM ;if (!phys) { -pci_unmap_page (hwdev, phys,PAGE_SIZE ,PCI_DMA_FROMDEVICE ); - phys =pci_map_page (hwdev, page,0 ,PAGE_SIZE , -PCI_DMA_FROMDEVICE ); -if (pci_dma_mapping_error (hwdev, phys)) +dma_unmap_page (&hwdev->dev, phys,PAGE_SIZE ,DMA_FROM_DEVICE ); + phys =dma_map_page (&hwdev->dev, page,0 ,PAGE_SIZE , +DMA_FROM_DEVICE ); +if (dma_mapping_error (&hwdev->dev, phys))return -ENOMEM ;/* * FIXME: If we get 0 again, we should keep this page,
Signature · 1 line
2.17.1
PATCH 4/4 RDMA/pvrdma: Remove pci-dma-compat wrapper APIs
In reply to Suraj UpadhyayThe legacy API wrappers in include/linux/pci-dma-compat.h should go away as it creates unnecessary midlayering for include/linux/dma-mapping.h APIs.
Instead use dma-mapping.h APIs directly.
The patch has been generated with the coccinelle script below and compile-tested.
@@@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL
@@@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE
@@@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE
@@@@
- PCI_DMA_NONE
+ DMA_NONE
@@ expression E1, E2, E3; @@
- pci_alloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3; @@
- pci_zalloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3, E4; @@
- pci_free_consistent(E1, E2, E3, E4)
+ dma_free_coherent(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_single(E1, E2, E3, E4)
+ dma_map_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_single(E1, E2, E3, E4)
+ dma_unmap_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4, E5; @@
- pci_map_page(E1, E2, E3, E4, E5)
+ dma_map_page(&E1->dev, E2, E3, E4, E5)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_page(E1, E2, E3, E4)
+ dma_unmap_page(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_sg(E1, E2, E3, E4)
+ dma_map_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_sg(E1, E2, E3, E4)
+ dma_unmap_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_cpu(E1, E2, E3, E4)
+ dma_sync_single_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_device(E1, E2, E3, E4)
+ dma_sync_single_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_cpu(E1, E2, E3, E4)
+ dma_sync_sg_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_device(E1, E2, E3, E4)
+ dma_sync_sg_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2; @@
- pci_dma_mapping_error(E1, E2)
+ dma_mapping_error(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_consistent_dma_mask(E1, E2)
+ dma_set_coherent_mask(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_dma_mask(E1, E2)
+ dma_set_mask(&E1->dev, E2)
--- drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c +3 -3
@@ -839,15 +839,15 @@ static int pvrdma_pci_probe(struct pci_dev *pdev, }/* Enable 64-Bit DMA */ -if (pci_set_dma_mask (pdev,DMA_BIT_MASK (64 )) ==0 ) { - ret =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (64 )); +if (dma_set_mask (&pdev->dev,DMA_BIT_MASK (64 )) ==0 ) { + ret =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 ));if (ret !=0 ) {dev_err (&pdev->dev,"pci_set_consistent_dma_mask failed\n" ); goto err_free_resource; } }else { - ret =pci_set_dma_mask (pdev,DMA_BIT_MASK (32 )); + ret =dma_set_mask (&pdev->dev,DMA_BIT_MASK (32 ));if (ret !=0 ) {dev_err (&pdev->dev,"pci_set_dma_mask failed\n" );
Signature · 1 line
2.17.1
[PATCH 5/4] RDMA/efa : Remove pci-dma-compat wrapper APIs
In reply to Suraj UpadhyayThe legacy API wrappers in include/linux/pci-dma-compat.h should go away as it creates unnecessary midlayering for include/linux/dma-mapping.h APIs.
Instead use dma-mapping.h APIs directly.
The patch has been generated with the coccinelle script below and compile-tested.
@@@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL
@@@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE
@@@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE
@@@@
- PCI_DMA_NONE
+ DMA_NONE
@@ expression E1, E2, E3; @@
- pci_alloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3; @@
- pci_zalloc_consistent(E1, E2, E3)
+ dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
@@ expression E1, E2, E3, E4; @@
- pci_free_consistent(E1, E2, E3, E4)
+ dma_free_coherent(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_single(E1, E2, E3, E4)
+ dma_map_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_single(E1, E2, E3, E4)
+ dma_unmap_single(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4, E5; @@
- pci_map_page(E1, E2, E3, E4, E5)
+ dma_map_page(&E1->dev, E2, E3, E4, E5)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_page(E1, E2, E3, E4)
+ dma_unmap_page(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_map_sg(E1, E2, E3, E4)
+ dma_map_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_unmap_sg(E1, E2, E3, E4)
+ dma_unmap_sg(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_cpu(E1, E2, E3, E4)
+ dma_sync_single_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_single_for_device(E1, E2, E3, E4)
+ dma_sync_single_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_cpu(E1, E2, E3, E4)
+ dma_sync_sg_for_cpu(&E1->dev, E2, E3, E4)
@@ expression E1, E2, E3, E4; @@
- pci_dma_sync_sg_for_device(E1, E2, E3, E4)
+ dma_sync_sg_for_device(&E1->dev, E2, E3, E4)
@@ expression E1, E2; @@
- pci_dma_mapping_error(E1, E2)
+ dma_mapping_error(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_consistent_dma_mask(E1, E2)
+ dma_set_coherent_mask(&E1->dev, E2)
@@ expression E1, E2; @@
- pci_set_dma_mask(E1, E2)
+ dma_set_mask(&E1->dev, E2)
--- drivers/infiniband/hw/efa/efa_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/hw/efa/efa_main.c +2 -2
@@ -405,13 +405,13 @@ static int efa_device_init(struct efa_com_dev *edev, struct pci_dev *pdev)return err; } - err =pci_set_dma_mask (pdev,DMA_BIT_MASK (dma_width)); + err =dma_set_mask (&pdev->dev,DMA_BIT_MASK (dma_width));if (err) {dev_err (&pdev->dev,"pci_set_dma_mask failed %d\n" , err);return err; } - err =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (dma_width)); + err =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (dma_width));if (err) { dev_err(&pdev->dev, "err_pci_set_consistent_dma_mask failed %d\n",
Signature · 1 line
2.17.1
Re: [PATCH 5/4] RDMA/efa : Remove pci-dma-compat wrapper APIs
Quoted 8 lines · Suraj Upadhyay
The legacy API wrappers in
include/linux/pci-dma-compat.hshould go away as it creates unnecessary midlayering forinclude/linux/dma-mapping.hAPIs.Instead use
dma-mapping.hAPIs directly.The patch has been generated with the coccinelle script below and compile-tested.
[]
drivers/infiniband/hw/efa/efa_main.c
Quoted 1 line
drivers/infiniband/hw/efa/efa_main.c +0
-0
[]
drivers/infiniband/hw/efa/efa_main.c static int efa_device_init(struct efa_com_dev *edev, struct pci_dev *pdev) · line 410
Quoted 8 lines
drivers/infiniband/hw/efa/efa_main.c +1
-1@@ -405,13 +405,13 @@ static int efa_device_init(struct efa_com_dev *edev, struct pci_dev *pdev)return err; } - err =pci_set_dma_mask (pdev,DMA_BIT_MASK (dma_width)); + err =dma_set_mask (&pdev->dev,DMA_BIT_MASK (dma_width));if (err) {dev_err (&pdev->dev,"pci_set_dma_mask failed %d\n" , err);
Coccinelle is great for some things, but not
necessarily for these sorts of changes in an
completely automated way.
The dev_err messages also need to be changed
as the format string contains the old name.
Quoted 5 lines
drivers/infiniband/hw/efa/efa_main.c +1
-1- err =pci_set_consistent_dma_mask (pdev,DMA_BIT_MASK (dma_width)); + err =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (dma_width));if (err) { dev_err(&pdev->dev, "err_pci_set_consistent_dma_mask failed %d\n",
Quoted 20 lines · Suraj Upadhyay
Hii Developers,
This patch series will replace all the legacy pci-dma-compat wrappers
with the dma-mapping APIs directly in the INFINIBAND Subsystem.This task is done through a coccinelle script which is described in each commit message.
The changes are compile tested.
Thanks,
Suraj Upadhyay.
Suraj Upadhyay (4):
IB/hfi1: Remove pci-dma-compat wrapper APIs
IB/mthca: Remove pci-dma-compat wrapper APIs
RDMA/qib: Remove pci-dma-compat wrapper APIs
RDMA/pvrdma: Remove pci-dma-compat wrapper APIs
Quoted 12 lines
drivers/infiniband/hw/hfi1/pcie.c | 8 +++---- drivers/infiniband/hw/hfi1/user_exp_rcv.c | 13 +++++------ drivers/infiniband/hw/mthca/mthca_eq.c | 21 +++++++++-------- drivers/infiniband/hw/mthca/mthca_main.c | 8 +++---- drivers/infiniband/hw/mthca/mthca_memfree.c | 23 +++++++++++-------- drivers/infiniband/hw/qib/qib_file_ops.c | 12 +++++----- drivers/infiniband/hw/qib/qib_init.c | 4 ++-- drivers/infiniband/hw/qib/qib_pcie.c | 8 +++---- drivers/infiniband/hw/qib/qib_user_pages.c | 12 +++++----- .../infiniband/hw/vmw_pvrdma/pvrdma_main.c | 6 ++--- 10 files changed, 59 insertions(+), 56 deletions(-)
The efa patch isn't listed here, and it shows as patch 5/4?
Quoted 34 lines · Gal Pressman
Quoted 20 lines · Suraj Upadhyay
Hii Developers,
This patch series will replace all the legacy pci-dma-compat wrappers
with the dma-mapping APIs directly in the INFINIBAND Subsystem.This task is done through a coccinelle script which is described in each commit message.
The changes are compile tested.
Thanks,
Suraj Upadhyay.
Suraj Upadhyay (4):
IB/hfi1: Remove pci-dma-compat wrapper APIs
IB/mthca: Remove pci-dma-compat wrapper APIs
RDMA/qib: Remove pci-dma-compat wrapper APIs
RDMA/pvrdma: Remove pci-dma-compat wrapper APIsQuoted 12 lines
drivers/infiniband/hw/hfi1/pcie.c | 8 +++---- drivers/infiniband/hw/hfi1/user_exp_rcv.c | 13 +++++------ drivers/infiniband/hw/mthca/mthca_eq.c | 21 +++++++++-------- drivers/infiniband/hw/mthca/mthca_main.c | 8 +++---- drivers/infiniband/hw/mthca/mthca_memfree.c | 23 +++++++++++-------- drivers/infiniband/hw/qib/qib_file_ops.c | 12 +++++----- drivers/infiniband/hw/qib/qib_init.c | 4 ++-- drivers/infiniband/hw/qib/qib_pcie.c | 8 +++---- drivers/infiniband/hw/qib/qib_user_pages.c | 12 +++++----- .../infiniband/hw/vmw_pvrdma/pvrdma_main.c | 6 ++--- 10 files changed, 59 insertions(+), 56 deletions(-)
Quoted 1 line
The efa patch isn't listed here, and it shows as patch 5/4?
Yes, I forgot to add it in the queue.
Thought it would be nice if the patch ("efa") would be in the chain.
Though I am sending a v2 for that patch following joe perches suggestion.
Hope this wasn't an annoyance.
Thanks,
Suraj Upadhyay.
Jason Gunthorpe
maintainerQuoted 12 lines · Suraj Upadhyay
Hii Developers,
This patch series will replace all the legacy pci-dma-compat wrappers
with the dma-mapping APIs directly in the INFINIBAND Subsystem.This task is done through a coccinelle script which is described in each commit message.
The changes are compile tested.
Thanks,
Quoted 7 lines
Suraj Upadhyay.
Suraj Upadhyay (4):
IB/hfi1: Remove pci-dma-compat wrapper APIs
IB/mthca: Remove pci-dma-compat wrapper APIs
RDMA/qib: Remove pci-dma-compat wrapper APIs
RDMA/pvrdma: Remove pci-dma-compat wrapper APIs
Aside from Joe's notes it doesn't apply either:
Applying: RDMA/efa : Remove pci-dma-compat wrapper APIs Using index info to reconstruct a base tree...
error: patch failed: drivers/infiniband/hw/efa/efa_main.c:405
error: drivers/infiniband/hw/efa/efa_main.c: patch does not apply
error: Did you hand edit your patch?
It does not apply to blobs recorded in its index.
Try to avoid hand editing patches..
Please resend
Jason