On Sat, May 27 2006, Jeff Garzik wrote: > Jens Axboe wrote: > >Definitely, and we need to cover a lot more controllers than just piix > >and ahci. Being the selfish bastard that I am, I didn't care much about > >other devices... > > For 2.6.17 that's practical in any case: ata_piix is the only upstream > driver with a suspend method. > > > >diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c > >index fa476e7..28878f4 100644 > >--- a/drivers/scsi/libata-core.c > >+++ b/drivers/scsi/libata-core.c > >@@ -4297,6 +4297,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, 200000); > > ap->flags &= ~ATA_FLAG_SUSPENDED; > > ata_set_mode(ap); > > } > >@@ -4846,6 +4847,7 @@ int ata_pci_device_suspend(struct pci_de > > > > int ata_pci_device_resume(struct pci_dev *pdev) > > { > >+ msleep(500); > > pci_set_power_state(pdev, PCI_D0); > > pci_restore_state(pdev); > > pci_enable_device(pdev); > > Does it work if you move msleep() below pci_restore_state()? > " " " " below pci_enable_device()? > > I think the delay makes more sense after you wake up the controller... I'd be surprised if it didn't, let me do a reboot with it moved at the bottom of ata_pci_device_resume(). brb... -- 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