diff options
author | Akinobu Mita <mita@fixstars.com> | 2013-07-29 15:06:02 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-08-26 04:51:27 -0400 |
commit | e0f4b7c5acbac65d2f56ed5e1d2d8036f9db936e (patch) | |
tree | 686682b6b51438299b4f41e8d6c70a28b8262bfe /drivers/scsi/ufs | |
parent | 36f4f3b672748e7d9786ef1e0ae5caefd337b668 (diff) |
[SCSI] ufs: don't disable_irq() if the IRQ can be shared among devices
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>
Diffstat (limited to 'drivers/scsi/ufs')
-rw-r--r-- | drivers/scsi/ufs/ufshcd-pci.c | 2 | ||||
-rw-r--r-- | drivers/scsi/ufs/ufshcd-pltfrm.c | 2 |
2 files changed, 0 insertions, 4 deletions
diff --git a/drivers/scsi/ufs/ufshcd-pci.c b/drivers/scsi/ufs/ufshcd-pci.c index 24d6ba717144..a823cf44e949 100644 --- a/drivers/scsi/ufs/ufshcd-pci.c +++ b/drivers/scsi/ufs/ufshcd-pci.c | |||
@@ -131,8 +131,6 @@ static void ufshcd_pci_remove(struct pci_dev *pdev) | |||
131 | 131 | ||
132 | pm_runtime_forbid(&pdev->dev); | 132 | pm_runtime_forbid(&pdev->dev); |
133 | pm_runtime_get_noresume(&pdev->dev); | 133 | pm_runtime_get_noresume(&pdev->dev); |
134 | |||
135 | disable_irq(pdev->irq); | ||
136 | ufshcd_remove(hba); | 134 | ufshcd_remove(hba); |
137 | pci_set_drvdata(pdev, NULL); | 135 | pci_set_drvdata(pdev, NULL); |
138 | } | 136 | } |
diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/scsi/ufs/ufshcd-pltfrm.c index c5c28357fb63..8b4a27fdbb3e 100644 --- a/drivers/scsi/ufs/ufshcd-pltfrm.c +++ b/drivers/scsi/ufs/ufshcd-pltfrm.c | |||
@@ -188,8 +188,6 @@ static int ufshcd_pltfrm_remove(struct platform_device *pdev) | |||
188 | struct ufs_hba *hba = platform_get_drvdata(pdev); | 188 | struct ufs_hba *hba = platform_get_drvdata(pdev); |
189 | 189 | ||
190 | pm_runtime_get_sync(&(pdev)->dev); | 190 | pm_runtime_get_sync(&(pdev)->dev); |
191 | |||
192 | disable_irq(hba->irq); | ||
193 | ufshcd_remove(hba); | 191 | ufshcd_remove(hba); |
194 | return 0; | 192 | return 0; |
195 | } | 193 | } |