[PATCH 16/28] mvsas: fully convert to the generic DMA API

2018-10-14 Thread Christoph Hellwig
The driver is currently using an odd mix of legacy PCI DMA API and
generic DMA API calls, switch it over to the generic API entirely.

Signed-off-by: Christoph Hellwig 
Reviewed-by: Johannes Thumshirn 
---
 drivers/scsi/mvsas/mv_init.c | 21 +++--
 drivers/scsi/mvsas/mv_sas.c  | 12 ++--
 2 files changed, 9 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
index 8c91637cd598..3ac34373746c 100644
--- a/drivers/scsi/mvsas/mv_init.c
+++ b/drivers/scsi/mvsas/mv_init.c
@@ -403,29 +403,14 @@ static int pci_go_64(struct pci_dev *pdev)
 {
int rc;
 
-   if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) {
-   rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
-   if (rc) {
-   rc = pci_set_consistent_dma_mask(pdev, 
DMA_BIT_MASK(32));
-   if (rc) {
-   dev_printk(KERN_ERR, &pdev->dev,
-  "64-bit DMA enable failed\n");
-   return rc;
-   }
-   }
-   } else {
-   rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
+   rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
+   if (rc) {
+   rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
if (rc) {
dev_printk(KERN_ERR, &pdev->dev,
   "32-bit DMA enable failed\n");
return rc;
}
-   rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
-   if (rc) {
-   dev_printk(KERN_ERR, &pdev->dev,
-  "32-bit consistent DMA enable failed\n");
-   return rc;
-   }
}
 
return rc;
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
index cff43bd9f675..3df1428df317 100644
--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -336,13 +336,13 @@ static int mvs_task_prep_smp(struct mvs_info *mvi,
 * DMA-map SMP request, response buffers
 */
sg_req = &task->smp_task.smp_req;
-   elem = dma_map_sg(mvi->dev, sg_req, 1, PCI_DMA_TODEVICE);
+   elem = dma_map_sg(mvi->dev, sg_req, 1, DMA_TO_DEVICE);
if (!elem)
return -ENOMEM;
req_len = sg_dma_len(sg_req);
 
sg_resp = &task->smp_task.smp_resp;
-   elem = dma_map_sg(mvi->dev, sg_resp, 1, PCI_DMA_FROMDEVICE);
+   elem = dma_map_sg(mvi->dev, sg_resp, 1, DMA_FROM_DEVICE);
if (!elem) {
rc = -ENOMEM;
goto err_out;
@@ -416,10 +416,10 @@ static int mvs_task_prep_smp(struct mvs_info *mvi,
 
 err_out_2:
dma_unmap_sg(mvi->dev, &tei->task->smp_task.smp_resp, 1,
-PCI_DMA_FROMDEVICE);
+DMA_FROM_DEVICE);
 err_out:
dma_unmap_sg(mvi->dev, &tei->task->smp_task.smp_req, 1,
-PCI_DMA_TODEVICE);
+DMA_TO_DEVICE);
return rc;
 }
 
@@ -904,9 +904,9 @@ static void mvs_slot_task_free(struct mvs_info *mvi, struct 
sas_task *task,
switch (task->task_proto) {
case SAS_PROTOCOL_SMP:
dma_unmap_sg(mvi->dev, &task->smp_task.smp_resp, 1,
-PCI_DMA_FROMDEVICE);
+DMA_FROM_DEVICE);
dma_unmap_sg(mvi->dev, &task->smp_task.smp_req, 1,
-PCI_DMA_TODEVICE);
+DMA_TO_DEVICE);
break;
 
case SAS_PROTOCOL_SATA:
-- 
2.19.1



Re: [PATCH 16/28] mvsas: fully convert to the generic DMA API

2018-10-12 Thread Johannes Thumshirn
Looks good,
Reviewed-by: Johannes Thumshirn 
-- 
Johannes ThumshirnSUSE Labs 
jthumsh...@suse.de+49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850


[PATCH 16/28] mvsas: fully convert to the generic DMA API

2018-10-11 Thread Christoph Hellwig
The driver is currently using an odd mix of legacy PCI DMA API and
generic DMA API calls, switch it over to the generic API entirely.

Signed-off-by: Christoph Hellwig 
---
 drivers/scsi/mvsas/mv_init.c | 21 +++--
 drivers/scsi/mvsas/mv_sas.c  | 12 ++--
 2 files changed, 9 insertions(+), 24 deletions(-)

diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
index 8c91637cd598..3ac34373746c 100644
--- a/drivers/scsi/mvsas/mv_init.c
+++ b/drivers/scsi/mvsas/mv_init.c
@@ -403,29 +403,14 @@ static int pci_go_64(struct pci_dev *pdev)
 {
int rc;
 
-   if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) {
-   rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
-   if (rc) {
-   rc = pci_set_consistent_dma_mask(pdev, 
DMA_BIT_MASK(32));
-   if (rc) {
-   dev_printk(KERN_ERR, &pdev->dev,
-  "64-bit DMA enable failed\n");
-   return rc;
-   }
-   }
-   } else {
-   rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
+   rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
+   if (rc) {
+   rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
if (rc) {
dev_printk(KERN_ERR, &pdev->dev,
   "32-bit DMA enable failed\n");
return rc;
}
-   rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
-   if (rc) {
-   dev_printk(KERN_ERR, &pdev->dev,
-  "32-bit consistent DMA enable failed\n");
-   return rc;
-   }
}
 
return rc;
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
index cff43bd9f675..3df1428df317 100644
--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -336,13 +336,13 @@ static int mvs_task_prep_smp(struct mvs_info *mvi,
 * DMA-map SMP request, response buffers
 */
sg_req = &task->smp_task.smp_req;
-   elem = dma_map_sg(mvi->dev, sg_req, 1, PCI_DMA_TODEVICE);
+   elem = dma_map_sg(mvi->dev, sg_req, 1, DMA_TO_DEVICE);
if (!elem)
return -ENOMEM;
req_len = sg_dma_len(sg_req);
 
sg_resp = &task->smp_task.smp_resp;
-   elem = dma_map_sg(mvi->dev, sg_resp, 1, PCI_DMA_FROMDEVICE);
+   elem = dma_map_sg(mvi->dev, sg_resp, 1, DMA_FROM_DEVICE);
if (!elem) {
rc = -ENOMEM;
goto err_out;
@@ -416,10 +416,10 @@ static int mvs_task_prep_smp(struct mvs_info *mvi,
 
 err_out_2:
dma_unmap_sg(mvi->dev, &tei->task->smp_task.smp_resp, 1,
-PCI_DMA_FROMDEVICE);
+DMA_FROM_DEVICE);
 err_out:
dma_unmap_sg(mvi->dev, &tei->task->smp_task.smp_req, 1,
-PCI_DMA_TODEVICE);
+DMA_TO_DEVICE);
return rc;
 }
 
@@ -904,9 +904,9 @@ static void mvs_slot_task_free(struct mvs_info *mvi, struct 
sas_task *task,
switch (task->task_proto) {
case SAS_PROTOCOL_SMP:
dma_unmap_sg(mvi->dev, &task->smp_task.smp_resp, 1,
-PCI_DMA_FROMDEVICE);
+DMA_FROM_DEVICE);
dma_unmap_sg(mvi->dev, &task->smp_task.smp_req, 1,
-PCI_DMA_TODEVICE);
+DMA_TO_DEVICE);
break;
 
case SAS_PROTOCOL_SATA:
-- 
2.19.1