aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Lord <liml@rtr.ca>2006-05-28 11:28:00 -0400
committerJeff Garzik <jeff@garzik.org>2006-05-28 16:32:08 -0400
commit0737ac895afbfbe210557fa5fbafcca932d5fa7c (patch)
tree35b521b93f100f5aba2dc78a978fcec3b42afdae
parentecd68853b852cdafb138f9c437f3a751fe7dc381 (diff)
downloadlinux-0737ac895afbfbe210557fa5fbafcca932d5fa7c.tar.gz
[PATCH] the latest consensus libata resume fix
Okay, just to sum things up. This forces libata to wait for up to 2 seconds for BUSY|DRQ to clear on resume before continuing. [jgarzik adds...] During testing we never saw DRQ asserted, but nonetheless (a) this works and (b) testing for DRQ won't hurt. Signed-off-by: Mark Lord <liml@rtr.ca> Acked-by: Jens Axboe <axboe@suse.de> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/scsi/libata-core.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index fa476e7e0a480c..b046ffa22101cc 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -4297,6 +4297,7 @@ static int ata_start_drive(struct ata_port *ap, struct ata_device *dev)
int ata_device_resume(struct ata_port *ap, struct ata_device *dev)
{
if (ap->flags & ATA_FLAG_SUSPENDED) {
+ ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 200000);
ap->flags &= ~ATA_FLAG_SUSPENDED;
ata_set_mode(ap);
}