summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2010-01-11 11:14:44 +0900
committerJeff Garzik <jgarzik@redhat.com>2010-01-12 14:34:14 -0500
commit5040ab67a2c6d5710ba497dc52a8f7035729d7b0 (patch)
treedea2290e50111fde938bfcbb83de0377e7c4d94a /include
parent0b67c7439fe2a5d76602de36854c88e2beab00b0 (diff)
downloadlinux-5040ab67a2c6d5710ba497dc52a8f7035729d7b0.tar.gz
linux-5040ab67a2c6d5710ba497dc52a8f7035729d7b0.tar.bz2
linux-5040ab67a2c6d5710ba497dc52a8f7035729d7b0.zip
libata: retry link resume if necessary
Interestingly, when SIDPR is used in ata_piix, writes to DET in SControl sometimes get ignored leading to detection failure. Update sata_link_resume() such that it reads back SControl after clearing DET and retry if it's not clear. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: fengxiangjun <fengxiangjun@neusoft.com> Reported-by: Jim Faulkner <jfaulkne@ccs.neu.edu> Cc: stable@kernel.org Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/libata.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 6a9c4ddd3d95..73112250862c 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -354,6 +354,9 @@ enum {
/* max tries if error condition is still set after ->error_handler */
ATA_EH_MAX_TRIES = 5,
+ /* sometimes resuming a link requires several retries */
+ ATA_LINK_RESUME_TRIES = 5,
+
/* how hard are we gonna try to probe/recover devices */
ATA_PROBE_MAX_TRIES = 3,
ATA_EH_DEV_TRIES = 3,