On Wed, 13 Apr 2011, Sarah Sharp wrote: > Cai, will you try the following patch with Andiry's work-around patch, > but not with Alan's patch? > > This solves the 2nd hibernate failure for me. I think Alan's patch was > masking underlying issues when the USB 3.0 roothub was not marked as > having lost power. The USB core really thought the USB 3.0 hard drive > was still there, which is why can_submit was set. Alan, do you think > your patch is still needed? No, it's not needed, but something else is. The patch was written to solve a real problem: What should we do if a device is unplugged during a system sleep transition? Since khubd gets frozen before the transition starts, the device can't be unregistered -- and it can't be suspended. What do you think of the patch below instead? It actually does a better job of solving the underlying problem... although it does a worse job of reducing the code size. :-) Alan Stern Index: usb-2.6/drivers/usb/core/hub.c =================================================================== --- usb-2.6.orig/drivers/usb/core/hub.c +++ usb-2.6/drivers/usb/core/hub.c @@ -2296,6 +2296,16 @@ int usb_port_suspend(struct usb_device * USB_DEVICE_REMOTE_WAKEUP, 0, NULL, 0, USB_CTRL_SET_TIMEOUT); + + /* Failure to suspend is okay if the port isn't enabled */ + if (!(msg.event & PM_EVENT_AUTO)) { + u16 pstatus, pchange; + + pstatus = 0; + hub_port_status(hub, port1, &pstatus, &pchange); + if (!(pstatus & USB_PORT_STAT_ENABLE)) + status = 0; + } } else { /* device has up to 10 msec to fully suspend */ dev_dbg(&udev->dev, "usb %ssuspend\n", -- 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