aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-03-13 12:20:51 -0400
committerJeff Garzik <jeff@garzik.org>2007-04-28 14:15:59 -0400
commit771b8dad9653d2659e0ffcc237184cb16c317788 (patch)
treea901d1c2eddd4396bcc2df46b87f2abb271bf2fd /drivers/ata
parent176efb054422bffe6b5a34194ffad134366c7f7e (diff)
libata: hardreset on SERR_INTERNAL
There was a rare report where SB600 reported SERR_INTERNAL and SRST couldn't get it out of the failure mode. Hardreset on SERR_INTERNAL. As the problem is intermittent, whether this fixes the problem or not hasn't been verified yet, but hardresetting the channel on internal error is a good idea anyway. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-eh.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 39f556c02992..185876aba647 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1056,7 +1056,7 @@ static void ata_eh_analyze_serror(struct ata_port *ap)
1056 } 1056 }
1057 if (serror & SERR_INTERNAL) { 1057 if (serror & SERR_INTERNAL) {
1058 err_mask |= AC_ERR_SYSTEM; 1058 err_mask |= AC_ERR_SYSTEM;
1059 action |= ATA_EH_SOFTRESET; 1059 action |= ATA_EH_HARDRESET;
1060 } 1060 }
1061 if (serror & (SERR_PHYRDY_CHG | SERR_DEV_XCHG)) 1061 if (serror & (SERR_PHYRDY_CHG | SERR_DEV_XCHG))
1062 ata_ehi_hotplugged(&ehc->i); 1062 ata_ehi_hotplugged(&ehc->i);