]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Add libata resume fix, fwd from Marcel Holtmann
authorChris Wright <chrisw@sous-sol.org>
Wed, 31 May 2006 22:01:58 +0000 (15:01 -0700)
committerChris Wright <chrisw@sous-sol.org>
Wed, 31 May 2006 22:01:58 +0000 (15:01 -0700)
queue-2.6.16/series
queue-2.6.16/the-latest-consensus-libata-resume-fix.patch [new file with mode: 0644]

index 4b5280a918fcc882ddb19ae35c0d365bae714aaf..2487163fda636921629d0a552258e9eef2bd0dec 100644 (file)
@@ -4,3 +4,4 @@ cpuset-might-sleep-checking-zones-allowed-fix.patch
 powermac-force-only-suspend-to-disk-to-be-valid.patch
 input-psmouse-fix-new-device-detection-logic.patch
 ohci1394-sbp2-fix-scsi_add_device-failed-with-pl-3507-based-devices.patch
+the-latest-consensus-libata-resume-fix.patch
diff --git a/queue-2.6.16/the-latest-consensus-libata-resume-fix.patch b/queue-2.6.16/the-latest-consensus-libata-resume-fix.patch
new file mode 100644 (file)
index 0000000..1421a14
--- /dev/null
@@ -0,0 +1,32 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: Mark Lord <liml@rtr.ca>
+Date: Sun, 28 May 2006 11:28:00 -0400
+Subject: [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>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/scsi/libata-core.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- linux-2.6.16.19.orig/drivers/scsi/libata-core.c
++++ linux-2.6.16.19/drivers/scsi/libata-core.c
+@@ -4293,6 +4293,7 @@ static int ata_start_drive(struct ata_po
+ 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);
+       }