Tejun, I tracked this change down to your patch: http://marc.theaimsgroup.com/?t=115012763500002&r=1&w=2 (approximately). (Interestingly, Jeff submitted the respective cumulative libata patch last year on my birthday:-( ) Also, there's a Ubuntu bug report: https://launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/76431 identical to what I see, although I cannot check if it worked before 2.6.20. Could you, please, comment how is this supposed to work? In particular, what shoud trigger the EH action, leading to setting the ATA_DFLAG_SUSPENDED flag? Below again my earlier post for reference. Thanks Guennadi On Wed, 28 Feb 2007, Guennadi Liakhovetski wrote: > On Mon, 26 Feb 2007, Guennadi Liakhovetski wrote: > > > With a post 2.6.20 kernel from powerpc.git I cannot suspend at all: > > > > pata_sil680 0000:00:0c.0: suspend > > ata1: suspend failed, device 0 still active > > pci_device_suspend(): ata_pci_device_suspend+0x0/0x74() returns -16 > > suspend_device(): pci_device_suspend+0x0/0xac() returns -16 > > Could not suspend device 0000:00:0c.0: error -16 > > AFAICS, "still active" is printed from ata_host_suspend() if a device > (disk) on the host to be suspended doesn't have ATA_DFLAG_SUSPENDED flag > set. This flag is only set in ata_eh_suspend(), which is only called from > ata_eh_recover(), like this: > > generic_error_handler() > ata_bmdma_drive_eh() > ata_do_eh() > ata_eh_recover() > ata_eh_suspend() > dev->flags |= ATA_DFLAG_SUSPENDED; > > but I don't understand why the error handler should be envoked? Should the > "disk" be suspended before the host and is it when the eh should set the > flag? If my guess is right - why doesn't the disk get suspended on my > machine? Shall I suspend it explicitely from userspace? I do "hdparm -Y", > and it does stop spinning", but I still get the error. > > Thanks > Guennadi > --- > Guennadi Liakhovetski > --- Guennadi Liakhovetski