diff options
author | Tejun Heo <htejun@gmail.com> | 2007-03-13 12:20:51 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-04-28 14:15:59 -0400 |
commit | 771b8dad9653d2659e0ffcc237184cb16c317788 (patch) | |
tree | a901d1c2eddd4396bcc2df46b87f2abb271bf2fd /drivers/ata | |
parent | 176efb054422bffe6b5a34194ffad134366c7f7e (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.c | 2 |
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); |