Mark Lord wrote:
Linus Torvalds wrote:
..
Can you move the two new lines to *after* the ata_busy_wait? I'd like
to see if ATA_DRDY ever comes on (it quite possibly will not, just
humor me)
Okay. rebooting now..
..
Okay, I used a patch like this on top of what we had before (warning: broken whitespace):
--- linux/drivers/scsi/libata-core.c.saved 2006-05-27 17:22:42.000000000 -0400
+++ linux/drivers/scsi/libata-core.c 2006-05-27 18:35:02.000000000 -0400
@@ -4297,7 +4297,11 @@
int ata_device_resume(struct ata_port *ap, struct ata_device *dev)
{
if (ap->flags & ATA_FLAG_SUSPENDED) {
+ u8 status1, status2;
+ status1 = ata_chk_status(ap);
ata_busy_wait(ap, ATA_BUSY, 200000);
+ status2 = ata_chk_status(ap);
+ printk("ATA status1=%02x status2=%02x\n", status1, status2);
ap->flags &= ~ATA_FLAG_SUSPENDED;
ata_set_mode(ap);
}
---------------------------------------------------------------------------
The output it gave me was:
May 27 18:39:12 localhost kernel: ATA status1=80 status2=50
May 27 18:39:12 localhost kernel: ata1: dev 0 configured for UDMA/100
May 27 18:39:12 localhost kernel: ATA status1=00 status2=00
May 27 18:39:12 localhost kernel: ata2: dev 0 configured for UDMA/33
So my drive, at least, seems to give DRDY very rapidly after de-asserting BUSY.
Cheers
-
: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html