On Tue, May 16 2006, zhao, forrest wrote: > On Fri, 2006-05-12 at 12:17 +0200, Jens Axboe wrote: > > The key is the 0xef timeout, then the device is offlined and you see a > > lot of io errors due to that. > > > > Try this: > > > > diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c > > index bd14720..f120839 100644 > > --- a/drivers/scsi/libata-core.c > > +++ b/drivers/scsi/libata-core.c > > @@ -4288,6 +4288,7 @@ int ata_device_resume(struct ata_port *a > > { > > if (ap->flags & ATA_FLAG_SUSPENDED) { > > ap->flags &= ~ATA_FLAG_SUSPENDED; > > + mdelay(2000); > > ata_set_mode(ap); > > } > > if (!ata_dev_present(dev)) > > > > Jens, > > Yes! The patch works. But I'm wondering why ata_piix driver in kernel > 2.6.16-rc6 works without mdelay(2000); in ata_device_resume()? I think Hugh traced it down to a unrelated timer change. The above really wants to wait for BUSY clear, perhaps the best solution would be to have piix device its own ata_piix_device_resume() that first waits for BUSY clear, then calls ata_device_resume(). -- Jens Axboe - : 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