On Tue, Mar 5, 2013 at 8:50 PM, Oliver Neukum <oneukum@xxxxxxx> wrote: >> >> IMO, for autosuspend, that is right, but it is not for system suspend, >> and the driver's suspend callback can't return in resumed state >> because the USB core will ignore the failure return value and force >> to suspend the device. > > It seems to me that in this case you just need to make sure that > suspend() not fail for system suspend. Or revisit the decision to > ignore failures. IMO, the current policy is correct. > In other words, if we don't handle errors, there must be no errors, > otherwise it doesn't matter what we do in the error case. We'd leave > the problem to generic layers. Generic layers can't handle the driver's specific failure. If driver records its suspend failure state in suspend(), resume() should and can deal with it without much difficulty. > > Furthermore there is a small chance that although the device tree > is walked, teh system suspend fails for another later reason that > is not ignored. In that case the drivers need to do error recovery, > albeit in resume(). Yes, resume() need to handle the USB system suspend failure either in normal resume or error recovery, both are basically same. Thanks, -- Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html