[SCSI] ufs: don't disable_irq() if the IRQ can be shared among devices
authorAkinobu Mita <mita@fixstars.com>
Mon, 29 Jul 2013 19:06:02 +0000 (00:36 +0530)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 26 Aug 2013 08:51:27 +0000 (12:51 +0400)
When removing the UFS driver, disable_irq() is called and the IRQ is
not enabled again.  Unfortunately, the IRQ is requested with IRQF_SHARED
and it can be shared among several devices.  So disabling the IRQ in
this way is just breaking other devices which are sharing the IRQ.

Signed-off-by: Akinobu Mita <mita@fixstars.com>
Signed-off-by: Santosh Y <santoshsy@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/ufs/ufshcd-pci.c
drivers/scsi/ufs/ufshcd-pltfrm.c

index 24d6ba7171443ecca26cf5ce9254137f857330a9..a823cf44e9494bdc506a2e4b86d7edb190ea76dc 100644 (file)
@@ -131,8 +131,6 @@ static void ufshcd_pci_remove(struct pci_dev *pdev)
 
        pm_runtime_forbid(&pdev->dev);
        pm_runtime_get_noresume(&pdev->dev);
-
-       disable_irq(pdev->irq);
        ufshcd_remove(hba);
        pci_set_drvdata(pdev, NULL);
 }
index c5c28357fb63894c7e7f2cba251d54e0ecb2497f..8b4a27fdbb3ef45406c76c1ca1a0812b357e00fc 100644 (file)
@@ -188,8 +188,6 @@ static int ufshcd_pltfrm_remove(struct platform_device *pdev)
        struct ufs_hba *hba =  platform_get_drvdata(pdev);
 
        pm_runtime_get_sync(&(pdev)->dev);
-
-       disable_irq(hba->irq);
        ufshcd_remove(hba);
        return 0;
 }