Re: usb modules after resuming suspend-to-disk cause kernel oops on iBook

Alan Stern <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.