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-9xxx.c | 50 ++++++++++++++++++++---------------------- > 1 file changed, 24 insertions(+), 26 deletions(-) > > diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c > index 27521fc3ef5a..05293babb031 100644 > --- a/drivers/scsi/3w-9xxx.c > +++ b/drivers/scsi/3w-9xxx.c > @@ -518,7 +518,8 @@ static int twa_allocate_memory(TW_Device_Extension *tw_dev, int size, int which) > unsigned long *cpu_addr; > int retval = 1; > > - cpu_addr = pci_alloc_consistent(tw_dev->tw_pci_dev, size*TW_Q_LENGTH, &dma_handle); > + cpu_addr = dma_alloc_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; > @@ -526,7 +527,8 @@ static int twa_allocate_memory(TW_Device_Extension *tw_dev, int size, int which) > > if ((unsigned long)cpu_addr % (TW_ALIGNMENT_9000)) { > TW_PRINTK(tw_dev->host, TW_DRIVER, 0x6, "Failed to allocate correctly aligned memory"); > - pci_free_consistent(tw_dev->tw_pci_dev, size*TW_Q_LENGTH, cpu_addr, dma_handle); > + dma_free_coherent(&tw_dev->tw_pci_dev->dev, size * TW_Q_LENGTH, > + cpu_addr, dma_handle); > goto out; > } > > @@ -1027,16 +1029,16 @@ static int twa_fill_sense(TW_Device_Extension *tw_dev, int request_id, int copy_ > static void twa_free_device_extension(TW_Device_Extension *tw_dev) > { > if (tw_dev->command_packet_virt[0]) > - pci_free_consistent(tw_dev->tw_pci_dev, > - sizeof(TW_Command_Full)*TW_Q_LENGTH, > - tw_dev->command_packet_virt[0], > - tw_dev->command_packet_phys[0]); > + 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, > - TW_SECTOR_SIZE*TW_Q_LENGTH, > - tw_dev->generic_buffer_virt[0], > - tw_dev->generic_buffer_phys[0]); > + 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]); > > kfree(tw_dev->event_queue[0]); > } /* End twa_free_device_extension() */ > @@ -2015,14 +2017,12 @@ static int twa_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, 0x23, "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, 0x23, "Failed to set dma mask"); > + retval = -ENODEV; > + goto out_disable_device; > + } > > host = scsi_host_alloc(&driver_template, sizeof(TW_Device_Extension)); > if (!host) { > @@ -2237,14 +2237,12 @@ static int twa_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, 0x40, "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, 0x40, "Failed to set dma mask during resume"); > + retval = -ENODEV; > + goto out_disable_device; > + } > > /* Initialize the card */ > if (twa_reset_sequence(tw_dev, 0)) { > -- > 2.19.1 > Acked-by: Adam Radford <aradford@xxxxxxxxx>