Jens Axboe wrote:
+ u8 status1, status2, status3; + status1 = ata_chk_status(ap); + ata_busy_wait(ap, ATA_BUSY, 200000); + status2 = ata_chk_status(ap); + status3 = ata_wait_idle(ap); + printk("s 1/2/3 %x/%x/%x\n", status1, status2, status3); with the rest being as posted before. It gives me: s 1/2/3 80/50/50 on resume.
...
With that hunk restored to normal, no change. Resume still works, status is still 80/50/50.
So, just the "status1 = ata_chk_status(ap);" seems to be enough to make it work for you, in place of the earlier 500msec delay we started with? Curious. Does it still work when the "status1 = ata_chk_status(ap);" is replaced with udelay(1) ?? - : 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