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