On Thu, 18 Oct 2018, Christoph Hellwig wrote:

> Switch from the legacy PCI DMA API to the generic DMA API.  Also switch
> to dma_map_single from pci_map_page in one case where this makes the code
> simpler.
> 
> Signed-off-by: Christoph Hellwig <h...@lst.de>
> ---
>  drivers/scsi/gdth.c      | 111 +++++++++++++++++++--------------------
>  drivers/scsi/gdth_proc.c |   4 +-
>  2 files changed, 56 insertions(+), 59 deletions(-)
> 
> diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
> index 7274d09b2a6c..3d856554b1b1 100644
> --- a/drivers/scsi/gdth.c
> +++ b/drivers/scsi/gdth.c
> @@ -2518,9 +2518,9 @@ static int gdth_fill_cache_cmd(gdth_ha_str *ha, struct 
> scsi_cmnd *scp,
>  
>          if (scsi_bufflen(scp)) {
>              cmndinfo->dma_dir = (read_write == 1 ?
> -                PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE);   
> -            sgcnt = pci_map_sg(ha->pdev, scsi_sglist(scp), 
> scsi_sg_count(scp),
> -                               cmndinfo->dma_dir);
> +                DMA_TO_DEVICE : DMA_FROM_DEVICE);   
> +            sgcnt = dma_map_sg(&ha->pdev->dev, scsi_sglist(scp),
> +                            scsi_sg_count(scp), cmndinfo->dma_dir);
>              if (mode64) {
>                  struct scatterlist *sl;
>  
> @@ -2603,8 +2603,6 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct 
> scsi_cmnd *scp, u8 b)
>      dma_addr_t sense_paddr;
>      int cmd_index, sgcnt, mode64;
>      u8 t,l;
> -    struct page *page;
> -    unsigned long offset;
>      struct gdth_cmndinfo *cmndinfo;
>  
>      t = scp->device->id;
> @@ -2649,10 +2647,8 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct 
> scsi_cmnd *scp, u8 b)
>          }
>  
>      } else {
> -        page = virt_to_page(scp->sense_buffer);
> -        offset = (unsigned long)scp->sense_buffer & ~PAGE_MASK;
> -        sense_paddr = pci_map_page(ha->pdev,page,offset,
> -                                   16,PCI_DMA_FROMDEVICE);
> +        sense_paddr = dma_map_single(&ha->pdev->dev, scp->sense_buffer, 16,
> +                                  DMA_FROM_DEVICE);
>  
>       cmndinfo->sense_paddr  = sense_paddr;
>          cmdp->OpCode           = GDT_WRITE;             /* always */
> @@ -2693,9 +2689,9 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct 
> scsi_cmnd *scp, u8 b)
>          }
>  
>          if (scsi_bufflen(scp)) {
> -            cmndinfo->dma_dir = PCI_DMA_BIDIRECTIONAL;
> -            sgcnt = pci_map_sg(ha->pdev, scsi_sglist(scp), 
> scsi_sg_count(scp),
> -                               cmndinfo->dma_dir);
> +            cmndinfo->dma_dir = DMA_BIDIRECTIONAL;
> +            sgcnt = dma_map_sg(&ha->pdev->dev, scsi_sglist(scp),
> +                            scsi_sg_count(scp), cmndinfo->dma_dir);
>              if (mode64) {
>                  struct scatterlist *sl;
>  
> @@ -3313,12 +3309,12 @@ static int gdth_sync_event(gdth_ha_str *ha, int 
> service, u8 index,
>              return 2;
>          }
>          if (scsi_bufflen(scp))
> -            pci_unmap_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp),
> +            dma_unmap_sg(&ha->pdev->dev, scsi_sglist(scp), 
> scsi_sg_count(scp),
>                           cmndinfo->dma_dir);
>  
>          if (cmndinfo->sense_paddr)
> -            pci_unmap_page(ha->pdev, cmndinfo->sense_paddr, 16,
> -                                                           
> PCI_DMA_FROMDEVICE);
> +            dma_unmap_page(&ha->pdev->dev, cmndinfo->sense_paddr, 16,
> +                        DMA_FROM_DEVICE);
>  
>          if (ha->status == S_OK) {
>              cmndinfo->status = S_OK;
> @@ -4251,8 +4247,8 @@ static int ioc_general(void __user *arg, char *cmnd)
>       if (gen.data_len + gen.sense_len == 0)
>               goto execute;
>  
> -        buf = pci_alloc_consistent(ha->pdev, gen.data_len + gen.sense_len,
> -                     &paddr);
> +        buf = dma_alloc_coherent(&ha->pdev->dev, gen.data_len + 
> gen.sense_len,
> +                     &paddr, GFP_KERNEL);
>       if (!buf)
>               return -EFAULT;
>  
> @@ -4292,7 +4288,8 @@ static int ioc_general(void __user *arg, char *cmnd)
>  
>       rval = 0;
>  out_free_buf:
> -     pci_free_consistent(ha->pdev, gen.data_len + gen.sense_len, buf, paddr);
> +     dma_free_coherent(&ha->pdev->dev, gen.data_len + gen.sense_len, buf,
> +                     paddr);
>       return 0;
>  }
>   
> @@ -4749,22 +4746,22 @@ static int __init gdth_isa_probe_one(u32 isa_bios)
>  
>       error = -ENOMEM;
>  
> -     ha->pscratch = pci_alloc_consistent(ha->pdev, GDTH_SCRATCH,
> -                                             &scratch_dma_handle);
> +     ha->pscratch = dma_alloc_coherent(&ha->pdev->dev, GDTH_SCRATCH,
> +                             &scratch_dma_handle, GFP_KERNEL);
>       if (!ha->pscratch)
>               goto out_dec_counters;
>       ha->scratch_phys = scratch_dma_handle;
>  
> -     ha->pmsg = pci_alloc_consistent(ha->pdev, sizeof(gdth_msg_str),
> -                                             &scratch_dma_handle);
> +     ha->pmsg = dma_alloc_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
> +                             &scratch_dma_handle, GFP_KERNEL);
>       if (!ha->pmsg)
>               goto out_free_pscratch;
>       ha->msg_phys = scratch_dma_handle;
>  
>  #ifdef INT_COAL
> -     ha->coal_stat = pci_alloc_consistent(ha->pdev,
> +     ha->coal_stat = dma_alloc_coherent(&ha->pdev->dev,
>                               sizeof(gdth_coal_status) * MAXOFFSETS,
> -                             &scratch_dma_handle);
> +                             &scratch_dma_handle, GFP_KERNEL);
>       if (!ha->coal_stat)
>               goto out_free_pmsg;
>       ha->coal_stat_phys = scratch_dma_handle;
> @@ -4811,14 +4808,14 @@ static int __init gdth_isa_probe_one(u32 isa_bios)
>  
>   out_free_coal_stat:
>  #ifdef INT_COAL
> -     pci_free_consistent(ha->pdev, sizeof(gdth_coal_status) * MAXOFFSETS,
> +     dma_free_coherent(&ha->pdev->dev, sizeof(gdth_coal_status) * MAXOFFSETS,
>                               ha->coal_stat, ha->coal_stat_phys);
>   out_free_pmsg:
>  #endif
> -     pci_free_consistent(ha->pdev, sizeof(gdth_msg_str),
> +     dma_free_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
>                               ha->pmsg, ha->msg_phys);
>   out_free_pscratch:
> -     pci_free_consistent(ha->pdev, GDTH_SCRATCH,
> +     dma_free_coherent(&ha->pdev->dev, GDTH_SCRATCH,
>                               ha->pscratch, ha->scratch_phys);
>   out_dec_counters:
>       gdth_ctr_count--;
> @@ -4875,29 +4872,29 @@ static int __init gdth_eisa_probe_one(u16 eisa_slot)
>       error = -ENOMEM;
>  
>       ha->pdev = NULL;
> -     ha->pscratch = pci_alloc_consistent(ha->pdev, GDTH_SCRATCH,
> -                                             &scratch_dma_handle);
> +     ha->pscratch = dma_alloc_coherent(&ha->pdev->dev, GDTH_SCRATCH,
> +                             &scratch_dma_handle, GFP_KERNEL);
>       if (!ha->pscratch)
>               goto out_free_irq;
>       ha->scratch_phys = scratch_dma_handle;
>  
> -     ha->pmsg = pci_alloc_consistent(ha->pdev, sizeof(gdth_msg_str),
> -                                             &scratch_dma_handle);
> +     ha->pmsg = dma_alloc_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
> +                             &scratch_dma_handle, GFP_KERNEL);
>       if (!ha->pmsg)
>               goto out_free_pscratch;
>       ha->msg_phys = scratch_dma_handle;
>  
>  #ifdef INT_COAL
> -     ha->coal_stat = pci_alloc_consistent(ha->pdev,
> +     ha->coal_stat = dma_alloc_coherent(&ha->pdev->dev,
>                       sizeof(gdth_coal_status) * MAXOFFSETS,
> -                     &scratch_dma_handle);
> +                     &scratch_dma_handle, GFP_KERNEL);
>       if (!ha->coal_stat)
>               goto out_free_pmsg;
>       ha->coal_stat_phys = scratch_dma_handle;
>  #endif
>  
> -     ha->ccb_phys = pci_map_single(ha->pdev,ha->pccb,
> -                     sizeof(gdth_cmd_str), PCI_DMA_BIDIRECTIONAL);
> +     ha->ccb_phys = dma_map_single(&ha->pdev->dev, ha->pccb,
> +                     sizeof(gdth_cmd_str), DMA_BIDIRECTIONAL);
>       if (!ha->ccb_phys)
>               goto out_free_coal_stat;
>  
> @@ -4941,18 +4938,18 @@ static int __init gdth_eisa_probe_one(u16 eisa_slot)
>       return 0;
>  
>   out_free_ccb_phys:
> -     pci_unmap_single(ha->pdev,ha->ccb_phys, sizeof(gdth_cmd_str),
> -                     PCI_DMA_BIDIRECTIONAL);
> +     dma_unmap_single(&ha->pdev->dev, ha->ccb_phys, sizeof(gdth_cmd_str),
> +                     DMA_BIDIRECTIONAL);
>   out_free_coal_stat:
>  #ifdef INT_COAL
> -     pci_free_consistent(ha->pdev, sizeof(gdth_coal_status) * MAXOFFSETS,
> +     dma_free_coherent(&ha->pdev->dev, sizeof(gdth_coal_status) * MAXOFFSETS,
>                               ha->coal_stat, ha->coal_stat_phys);
>   out_free_pmsg:
>  #endif
> -     pci_free_consistent(ha->pdev, sizeof(gdth_msg_str),
> +     dma_free_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
>                               ha->pmsg, ha->msg_phys);
>   out_free_pscratch:
> -     pci_free_consistent(ha->pdev, GDTH_SCRATCH,
> +     dma_free_coherent(&ha->pdev->dev, GDTH_SCRATCH,
>                               ha->pscratch, ha->scratch_phys);
>   out_free_irq:
>       free_irq(ha->irq, ha);
> @@ -5008,22 +5005,22 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, 
> gdth_ha_str **ha_out)
>  
>       error = -ENOMEM;
>  
> -     ha->pscratch = pci_alloc_consistent(ha->pdev, GDTH_SCRATCH,
> -                                             &scratch_dma_handle);
> +     ha->pscratch = dma_alloc_coherent(&ha->pdev->dev, GDTH_SCRATCH,
> +                             &scratch_dma_handle, GFP_KERNEL);
>       if (!ha->pscratch)
>               goto out_free_irq;
>       ha->scratch_phys = scratch_dma_handle;
>  
> -     ha->pmsg = pci_alloc_consistent(ha->pdev, sizeof(gdth_msg_str),
> -                                     &scratch_dma_handle);
> +     ha->pmsg = dma_alloc_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
> +                             &scratch_dma_handle, GFP_KERNEL);
>       if (!ha->pmsg)
>               goto out_free_pscratch;
>       ha->msg_phys = scratch_dma_handle;
>  
>  #ifdef INT_COAL
> -     ha->coal_stat = pci_alloc_consistent(ha->pdev,
> +     ha->coal_stat = dma_alloc_coherent(&ha->pdev->dev,
>                       sizeof(gdth_coal_status) * MAXOFFSETS,
> -                     &scratch_dma_handle);
> +                     &scratch_dma_handle, GFP_KERNEL
>       if (!ha->coal_stat)
>               goto out_free_pmsg;
>       ha->coal_stat_phys = scratch_dma_handle;

Missing closing parenthesis and semi-colon.

-- 

> @@ -5051,16 +5048,16 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, 
> gdth_ha_str **ha_out)
>       /* 64-bit DMA only supported from FW >= x.43 */
>       if (!(ha->cache_feat & ha->raw_feat & ha->screen_feat & GDT_64BIT) ||
>           !ha->dma64_support) {
> -             if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) {
> +             if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
>                       printk(KERN_WARNING "GDT-PCI %d: "
>                               "Unable to set 32-bit DMA\n", ha->hanum);
>                               goto out_free_coal_stat;
>               }
>       } else {
>               shp->max_cmd_len = 16;
> -             if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) {
> +             if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) {
>                       printk("GDT-PCI %d: 64-bit DMA enabled\n", ha->hanum);
> -             } else if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) {
> +             } else if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
>                       printk(KERN_WARNING "GDT-PCI %d: "
>                               "Unable to set 64/32-bit DMA\n", ha->hanum);
>                       goto out_free_coal_stat;
> @@ -5090,14 +5087,14 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, 
> gdth_ha_str **ha_out)
>  
>   out_free_coal_stat:
>  #ifdef INT_COAL
> -     pci_free_consistent(ha->pdev, sizeof(gdth_coal_status) * MAXOFFSETS,
> +     dma_free_coherent(&ha->pdev->dev, sizeof(gdth_coal_status) * MAXOFFSETS,
>                               ha->coal_stat, ha->coal_stat_phys);
>   out_free_pmsg:
>  #endif
> -     pci_free_consistent(ha->pdev, sizeof(gdth_msg_str),
> +     dma_free_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
>                               ha->pmsg, ha->msg_phys);
>   out_free_pscratch:
> -     pci_free_consistent(ha->pdev, GDTH_SCRATCH,
> +     dma_free_coherent(&ha->pdev->dev, GDTH_SCRATCH,
>                               ha->pscratch, ha->scratch_phys);
>   out_free_irq:
>       free_irq(ha->irq, ha);
> @@ -5132,18 +5129,18 @@ static void gdth_remove_one(gdth_ha_str *ha)
>  #endif
>  #ifdef INT_COAL
>       if (ha->coal_stat)
> -             pci_free_consistent(ha->pdev, sizeof(gdth_coal_status) *
> +             dma_free_coherent(&ha->pdev->dev, sizeof(gdth_coal_status) *
>                       MAXOFFSETS, ha->coal_stat, ha->coal_stat_phys);
>  #endif
>       if (ha->pscratch)
> -             pci_free_consistent(ha->pdev, GDTH_SCRATCH,
> +             dma_free_coherent(&ha->pdev->dev, GDTH_SCRATCH,
>                       ha->pscratch, ha->scratch_phys);
>       if (ha->pmsg)
> -             pci_free_consistent(ha->pdev, sizeof(gdth_msg_str),
> +             dma_free_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
>                       ha->pmsg, ha->msg_phys);
>       if (ha->ccb_phys)
> -             pci_unmap_single(ha->pdev,ha->ccb_phys,
> -                     sizeof(gdth_cmd_str),PCI_DMA_BIDIRECTIONAL);
> +             dma_unmap_single(&ha->pdev->dev, ha->ccb_phys,
> +                     sizeof(gdth_cmd_str), DMA_BIDIRECTIONAL);
>  
>       scsi_host_put(shp);
>  }
> diff --git a/drivers/scsi/gdth_proc.c b/drivers/scsi/gdth_proc.c
> index 6a6bdab748df..745bcac9a796 100644
> --- a/drivers/scsi/gdth_proc.c
> +++ b/drivers/scsi/gdth_proc.c
> @@ -244,7 +244,7 @@ int gdth_show_info(struct seq_file *m, struct Scsi_Host 
> *host)
>          seq_puts(m, "\nPhysical Devices:");
>          flag = FALSE;
>              
> -        buf = pci_alloc_consistent(ha->pdev, size, &paddr);
> +        buf = dma_alloc_coherent(&ha->pdev->dev, size, &paddr, GFP_KERNEL);
>          if (!buf) 
>              goto stop_output;
>          for (i = 0; i < ha->bus_cnt; ++i) {
> @@ -514,7 +514,7 @@ int gdth_show_info(struct seq_file *m, struct Scsi_Host 
> *host)
>                  }
>              }
>          }
> -     pci_free_consistent(ha->pdev, size, buf, paddr);
> +     dma_free_coherent(&ha->pdev->dev, size, buf, paddr);
>  
>          for (i = 0; i < MAX_HDRIVES; ++i) {
>              if (!(ha->hdr[i].present))
> 

Reply via email to