aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sata_sil.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2006-06-12 14:18:51 +0900
committerJeff Garzik <jeff@garzik.org>2006-06-12 02:10:26 -0400
commit23fa9618094975f803ed0c6a44604b16747b9637 (patch)
tree6ddba8a0202624cb34a9a5b6cb98ae503b466faf /drivers/scsi/sata_sil.c
parentlibata: fix build, by adding required workqueue member to port struct (diff)
downloadlinux-dev-23fa9618094975f803ed0c6a44604b16747b9637.tar.xz
linux-dev-23fa9618094975f803ed0c6a44604b16747b9637.zip
[PATCH] sata_sil: add controller unplug detection in sil_interrupt()
Short-circuit interrupt handling if BMDMA2 is reported as 0xffffffff indicating device removal. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/scsi/sata_sil.c')
-rw-r--r--drivers/scsi/sata_sil.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/sata_sil.c b/drivers/scsi/sata_sil.c
index 0898cbe6458c..a7e99a1def2f 100644
--- a/drivers/scsi/sata_sil.c
+++ b/drivers/scsi/sata_sil.c
@@ -419,7 +419,8 @@ static irqreturn_t sil_interrupt(int irq, void *dev_instance,
if (unlikely(!ap || ap->flags & ATA_FLAG_DISABLED))
continue;
- if (!(bmdma2 & (SIL_DMA_COMPLETE | SIL_DMA_SATA_IRQ)))
+ if (bmdma2 == 0xffffffff ||
+ !(bmdma2 & (SIL_DMA_COMPLETE | SIL_DMA_SATA_IRQ)))
continue;
sil_host_intr(ap, bmdma2);