On Thu, Oct 11, 2018 at 12:38 PM Christoph Hellwig <hch@xxxxxx> wrote: > > 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 <hch@xxxxxx> > --- > drivers/scsi/3w-sas.c | 38 +++++++++++++++++--------------------- > 1 file changed, 17 insertions(+), 21 deletions(-) > > diff --git a/drivers/scsi/3w-sas.c b/drivers/scsi/3w-sas.c > index 40c1e6e64f58..266bdac75304 100644 > --- a/drivers/scsi/3w-sas.c > +++ b/drivers/scsi/3w-sas.c > @@ -644,8 +644,8 @@ static int twl_allocate_memory(TW_Device_Extension *tw_dev, int size, int which) > unsigned long *cpu_addr; > int retval = 1; > > - cpu_addr = pci_zalloc_consistent(tw_dev->tw_pci_dev, size * TW_Q_LENGTH, > - &dma_handle); > + cpu_addr = dma_zalloc_coherent(&tw_dev->tw_pci_dev->dev, > + size * TW_Q_LENGTH, &dma_handle, GFP_KERNEL); > if (!cpu_addr) { > TW_PRINTK(tw_dev->host, TW_DRIVER, 0x5, "Memory allocation failed"); > goto out; > @@ -899,19 +899,19 @@ static int twl_fill_sense(TW_Device_Extension *tw_dev, int i, int request_id, in > static void twl_free_device_extension(TW_Device_Extension *tw_dev) > { > if (tw_dev->command_packet_virt[0]) > - pci_free_consistent(tw_dev->tw_pci_dev, > + dma_free_coherent(&tw_dev->tw_pci_dev->dev, > sizeof(TW_Command_Full)*TW_Q_LENGTH, > tw_dev->command_packet_virt[0], > tw_dev->command_packet_phys[0]); > > if (tw_dev->generic_buffer_virt[0]) > - pci_free_consistent(tw_dev->tw_pci_dev, > + dma_free_coherent(&tw_dev->tw_pci_dev->dev, > TW_SECTOR_SIZE*TW_Q_LENGTH, > tw_dev->generic_buffer_virt[0], > tw_dev->generic_buffer_phys[0]); > > if (tw_dev->sense_buffer_virt[0]) > - pci_free_consistent(tw_dev->tw_pci_dev, > + dma_free_coherent(&tw_dev->tw_pci_dev->dev, > sizeof(TW_Command_Apache_Header)* > TW_Q_LENGTH, > tw_dev->sense_buffer_virt[0], > @@ -1571,14 +1571,12 @@ static int twl_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id) > pci_set_master(pdev); > pci_try_set_mwi(pdev); > > - if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) > - || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64))) > - if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) > - || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) { > - TW_PRINTK(host, TW_DRIVER, 0x18, "Failed to set dma mask"); > - retval = -ENODEV; > - goto out_disable_device; > - } > + if (dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)) || > + dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32))) { > + TW_PRINTK(host, TW_DRIVER, 0x18, "Failed to set dma mask"); > + retval = -ENODEV; > + goto out_disable_device; > + } > > host = scsi_host_alloc(&driver_template, sizeof(TW_Device_Extension)); > if (!host) { > @@ -1805,14 +1803,12 @@ static int twl_resume(struct pci_dev *pdev) > pci_set_master(pdev); > pci_try_set_mwi(pdev); > > - if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) > - || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64))) > - if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) > - || pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) { > - TW_PRINTK(host, TW_DRIVER, 0x25, "Failed to set dma mask during resume"); > - retval = -ENODEV; > - goto out_disable_device; > - } > + if (dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)) || > + dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32))) { > + TW_PRINTK(host, TW_DRIVER, 0x25, "Failed to set dma mask during resume"); > + retval = -ENODEV; > + goto out_disable_device; > + } > > /* Initialize the card */ > if (twl_reset_sequence(tw_dev, 0)) { > -- > 2.19.1 > Acked-by: Adam Radford <aradford@xxxxxxxxx>