1. 25 Aug, 2020 3 commits
    • Suraj Upadhyay's avatar
      scsi: dc395x: Remove pci-dma-compat wrapper API · ece0eeff
      Suraj Upadhyay authored
      The legacy API wrappers in include/linux/pci-dma-compat.h should go away as
      they create unnecessary midlayering for include/linux/dma-mapping.h API.
      Instead use dma-mapping.h API directly.
      
      The patch has been generated with the coccinelle script below.
      Compile tested.
      
      @@@@
      - PCI_DMA_BIDIRECTIONAL
      + DMA_BIDIRECTIONAL
      
      @@@@
      - PCI_DMA_TODEVICE
      + DMA_TO_DEVICE
      
      @@@@
      - PCI_DMA_FROMDEVICE
      + DMA_FROM_DEVICE
      
      @@@@
      - PCI_DMA_NONE
      + DMA_NONE
      
      @@ expression E1, E2, E3; @@
      - pci_alloc_consistent(E1, E2, E3)
      + dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
      
      @@ expression E1, E2, E3; @@
      - pci_zalloc_consistent(E1, E2, E3)
      + dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_free_consistent(E1, E2, E3, E4)
      + dma_free_coherent(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_map_single(E1, E2, E3, E4)
      + dma_map_single(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_single(E1, E2, E3, E4)
      + dma_unmap_single(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4, E5; @@
      - pci_map_page(E1, E2, E3, E4, E5)
      + dma_map_page(&E1->dev, E2, E3, E4, E5)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_page(E1, E2, E3, E4)
      + dma_unmap_page(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_map_sg(E1, E2, E3, E4)
      + dma_map_sg(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_sg(E1, E2, E3, E4)
      + dma_unmap_sg(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_single_for_cpu(E1, E2, E3, E4)
      + dma_sync_single_for_cpu(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_single_for_device(E1, E2, E3, E4)
      + dma_sync_single_for_device(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_sg_for_cpu(E1, E2, E3, E4)
      + dma_sync_sg_for_cpu(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_sg_for_device(E1, E2, E3, E4)
      + dma_sync_sg_for_device(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2; @@
      - pci_dma_mapping_error(E1, E2)
      + dma_mapping_error(&E1->dev, E2)
      
      @@ expression E1, E2; @@
      - pci_set_consistent_dma_mask(E1, E2)
      + dma_set_coherent_mask(&E1->dev, E2)
      
      @@ expression E1, E2; @@
      - pci_set_dma_mask(E1, E2)
      + dma_set_mask(&E1->dev, E2)
      
      Link: https://lore.kernel.org/r/b8acc51ec774507050a9e9e8edf28e4933322a9e.1596045683.git.usuraj35@gmail.comSigned-off-by: default avatarSuraj Upadhyay <usuraj35@gmail.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      ece0eeff
    • Suraj Upadhyay's avatar
      scsi: aic7xxx: Remove pci-dma-compat wrapper API · daf4b00b
      Suraj Upadhyay authored
      The legacy API wrappers in include/linux/pci-dma-compat.h should go away as
      they create unnecessary midlayering for include/linux/dma-mapping.h API.
      Instead use dma-mapping.h API directly.
      
      The patch has been generated with the coccinelle script below.  And has
      been hand modified to replace each GFP_ with the correct flag depending
      upon the context.  Compile-tested.
      
      @@@@
      - PCI_DMA_BIDIRECTIONAL
      + DMA_BIDIRECTIONAL
      
      @@@@
      - PCI_DMA_TODEVICE
      + DMA_TO_DEVICE
      
      @@@@
      - PCI_DMA_FROMDEVICE
      + DMA_FROM_DEVICE
      
      @@@@
      - PCI_DMA_NONE
      + DMA_NONE
      
      @@ expression E1, E2, E3; @@
      - pci_alloc_consistent(E1, E2, E3)
      + dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
      
      @@ expression E1, E2, E3; @@
      - pci_zalloc_consistent(E1, E2, E3)
      + dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_free_consistent(E1, E2, E3, E4)
      + dma_free_coherent(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_map_single(E1, E2, E3, E4)
      + dma_map_single(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_single(E1, E2, E3, E4)
      + dma_unmap_single(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4, E5; @@
      - pci_map_page(E1, E2, E3, E4, E5)
      + dma_map_page(&E1->dev, E2, E3, E4, E5)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_page(E1, E2, E3, E4)
      + dma_unmap_page(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_map_sg(E1, E2, E3, E4)
      + dma_map_sg(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_sg(E1, E2, E3, E4)
      + dma_unmap_sg(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_single_for_cpu(E1, E2, E3, E4)
      + dma_sync_single_for_cpu(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_single_for_device(E1, E2, E3, E4)
      + dma_sync_single_for_device(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_sg_for_cpu(E1, E2, E3, E4)
      + dma_sync_sg_for_cpu(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_sg_for_device(E1, E2, E3, E4)
      + dma_sync_sg_for_device(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2; @@
      - pci_dma_mapping_error(E1, E2)
      + dma_mapping_error(&E1->dev, E2)
      
      @@ expression E1, E2; @@
      - pci_set_consistent_dma_mask(E1, E2)
      + dma_set_coherent_mask(&E1->dev, E2)
      
      @@ expression E1, E2; @@
      - pci_set_dma_mask(E1, E2)
      + dma_set_mask(&E1->dev, E2)
      
      Link: https://lore.kernel.org/r/790a8751b5c2b5393c3021b8def08e47bb1597c0.1596045683.git.usuraj35@gmail.comSigned-off-by: default avatarSuraj Upadhyay <usuraj35@gmail.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      daf4b00b
    • Suraj Upadhyay's avatar
      scsi: aacraid: Remove pci-dma-compat wrapper API · e555cd5f
      Suraj Upadhyay authored
      The legacy API wrappers in include/linux/pci-dma-compat.h should go away as
      they create unnecessary midlayering for include/linux/dma-mapping.h API.
      Instead use dma-mapping.h API directly.
      
      The patch has been generated with the coccinelle script below.
      Compile-tested.
      
      @@@@
      - PCI_DMA_BIDIRECTIONAL
      + DMA_BIDIRECTIONAL
      
      @@@@
      - PCI_DMA_TODEVICE
      + DMA_TO_DEVICE
      
      @@@@
      - PCI_DMA_FROMDEVICE
      + DMA_FROM_DEVICE
      
      @@@@
      - PCI_DMA_NONE
      + DMA_NONE
      
      @@ expression E1, E2, E3; @@
      - pci_alloc_consistent(E1, E2, E3)
      + dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
      
      @@ expression E1, E2, E3; @@
      - pci_zalloc_consistent(E1, E2, E3)
      + dma_alloc_coherent(&E1->dev, E2, E3, GFP_)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_free_consistent(E1, E2, E3, E4)
      + dma_free_coherent(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_map_single(E1, E2, E3, E4)
      + dma_map_single(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_single(E1, E2, E3, E4)
      + dma_unmap_single(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4, E5; @@
      - pci_map_page(E1, E2, E3, E4, E5)
      + dma_map_page(&E1->dev, E2, E3, E4, E5)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_page(E1, E2, E3, E4)
      + dma_unmap_page(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_map_sg(E1, E2, E3, E4)
      + dma_map_sg(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_unmap_sg(E1, E2, E3, E4)
      + dma_unmap_sg(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_single_for_cpu(E1, E2, E3, E4)
      + dma_sync_single_for_cpu(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_single_for_device(E1, E2, E3, E4)
      + dma_sync_single_for_device(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_sg_for_cpu(E1, E2, E3, E4)
      + dma_sync_sg_for_cpu(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2, E3, E4; @@
      - pci_dma_sync_sg_for_device(E1, E2, E3, E4)
      + dma_sync_sg_for_device(&E1->dev, E2, E3, E4)
      
      @@ expression E1, E2; @@
      - pci_dma_mapping_error(E1, E2)
      + dma_mapping_error(&E1->dev, E2)
      
      @@ expression E1, E2; @@
      - pci_set_consistent_dma_mask(E1, E2)
      + dma_set_coherent_mask(&E1->dev, E2)
      
      @@ expression E1, E2; @@
      - pci_set_dma_mask(E1, E2)
      + dma_set_mask(&E1->dev, E2)
      
      Link: https://lore.kernel.org/r/f8d4778440d55ba26c04eef0f7d63fb211a39443.1596045683.git.usuraj35@gmail.comSigned-off-by: default avatarSuraj Upadhyay <usuraj35@gmail.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      e555cd5f
  2. 21 Aug, 2020 36 commits
  3. 18 Aug, 2020 1 commit
    • Can Guo's avatar
      scsi: ufs: Fix a race condition between error handler and runtime PM ops · 5586dd8e
      Can Guo authored
      The current IRQ handler blocks SCSI requests before scheduling eh_work,
      when error handler calls pm_runtime_get_sync, if ufshcd_suspend/resume
      sends a SCSI cmd, most likely the SSU cmd, since SCSI requests are blocked,
      pm_runtime_get_sync() will never return because ufshcd_suspend/resume is
      blocked by the SCSI cmd.
      
       - In queuecommand path, hba->ufshcd_state check and ufshcd_send_command
         should stay under the same spin lock. This is to make sure that no more
         commands leak into doorbell after hba->ufshcd_state is changed.
      
       - Don't block SCSI requests before error handler starts to run, let error
         handler block SCSI requests when it is ready to start error recovery.
      
       - Don't let SCSI layer keep requeuing the SCSI cmds sent from HBA runtime
         PM ops, let them pass or fail them. Let them pass if eh_work is
         scheduled due to non-fatal errors. Fail them if eh_work is scheduled due
         to fatal errors, otherwise the cmds may eventually time out since UFS is
         in bad state, which gets error handler blocked for too long. If we fail
         the SCSI cmds sent from HBA runtime PM ops, HBA runtime PM ops fails
         too, but it does not hurt since error handler can recover HBA runtime PM
         error.
      
      Link: https://lore.kernel.org/r/1596975355-39813-9-git-send-email-cang@codeaurora.orgReviewed-by: default avatarBean Huo <beanhuo@micron.com>
      Reviewed-by: default avatarAsutosh Das <asutoshd@codeaurora.org>
      Signed-off-by: default avatarCan Guo <cang@codeaurora.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      5586dd8e