On Mon, 11 Mar 2013, James Bottomley wrote: > Oh, that seems to be the suspend order isn't careful enough. > __device_suspend() waits for its children, but the host disk are too far > separated in the device tree. If the immediate children of the host are > all sync, that wait never actually waits for anything. I was going to make exactly this same point. During async suspend, the PM core is careful to make sure that no device is suspended before its children. But there aren't any other checks, so if device A isn't an ancestor of device B then it's possible for async suspend to power down A before B. This can cause problems if B needs A to be active while B is suspending. Does the ATA system have any non-ancestor dependencies like this? If it does, the appropriate driver can be fixed to take them into account. Alan Stern -- To unsubscribe from this list: 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