On Sun, 1 Apr 2007, [UTF-8] Cédric Boutillier wrote:

> Hello,
> 
> Here are some precisions/updates on this problem :
> 
> I did some tests with kernel 2.6.21-rc5 compiled with the
> configuration presented in the file enclosed (I activated some USB
> verbose options). The method used to suspend-to-disk is invoking the
> hibernate script with sysfs-disk method.
> 
> I do not see a oops, but things seem to go wrong with USB resume.

> When I do not unload anything, the system resumes but then seems to
> enter into an infinite loop : I cannot interact with the computer.
> 
> When I unload the following modules before suspending:
> ehci_hcd appletouch usbhid hid ff_memless joydev tsdev sungem
> sungem_phy  lp parport bcm43xx ieee80211softmac ieee80211
> ieee80211_crypt ohci1394 ieee1394 firmware_class
> The system resumes, and I get to a prompt. But I see the following messages:
> 
> usb 1-2: USB disconnect address 3
> usb usb2: root hub lost power or was reset
> usb usb3: root  hub lost power or was reset

Those messages are more or less normal.  They indicate that during the 
suspend-to-disk, power to the USB controllers was turned off.  As you 
might expect, since the entire system gets turned off.

> I see a long (infinite?) collection of messages in syslogfs:
> 
> Apr  1 14:18:16 localhost kernel: hub 1-0:1.0: port 1, status 0105,
> change 0000, 12 Mb/s
> Apr  1 14:18:16 localhost kernel: hub 1-0:1.0: port 1 status 0000.0105
> after resume, 0
> Apr  1 14:18:16 localhost kernel: hub 1-0:1.0: logical disconnect on port 1
> Apr  1 14:18:16 localhost kernel: hub 1-0:1.0: can't clear suspend on
> port 1; -19

This really looks like a hardware problem in one of your USB controllers.  
The patch below might help.  See what happens.

Alan Stern


Index: linux-2.6.21-rc5/drivers/usb/core/hub.c
===================================================================
--- linux-2.6.21-rc5.orig/drivers/usb/core/hub.c
+++ linux-2.6.21-rc5/drivers/usb/core/hub.c
@@ -2458,19 +2458,6 @@ static void hub_port_connect_change(stru
                return;
        }
 
-#ifdef  CONFIG_USB_SUSPEND
-       /* If something is connected, but the port is suspended, wake it up. */
-       if (portstatus & USB_PORT_STAT_SUSPEND) {
-               status = hub_port_resume(hub, port1, NULL);
-               if (status < 0) {
-                       dev_dbg(hub_dev,
-                               "can't clear suspend on port %d; %d\n",
-                               port1, status);
-                       goto done;
-               }
-       }
-#endif
-
        for (i = 0; i < SET_CONFIG_TRIES; i++) {
                struct usb_device *udev;
 




-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to