]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[PATCH] the latest consensus libata resume fix
authorMark Lord <liml@rtr.ca>
Sun, 28 May 2006 15:28:00 +0000 (11:28 -0400)
committerChris Wright <chrisw@sous-sol.org>
Mon, 5 Jun 2006 17:18:14 +0000 (10:18 -0700)
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>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/scsi/libata-core.c

index 4f91b0dc572bb5b1aea66a6aed56df874808eac8..400e9d74ad586d82f63a98d6acde49b3f3e728ed 100644 (file)
@@ -4293,6 +4293,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);
        }