On Thu, Oct 11, 2018 at 12:38 PM Christoph Hellwig <h...@lst.de> 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 <h...@lst.de>
> ---
>  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 <aradf...@gmail.com>

Reply via email to