Re: PROBLEM: since linux kernel 3.8 Apple Cinema Display's usb hub spits errors randomly at boot.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 13 Mar 2013, Jenya Y wrote:

> Here how it went.
>  I did fresh rebuild of 3.8.2 kernel with my previous settings (where all of 
> the mentioned flags were set as 'm') restarted to check the errors - they were 
> there (-71). Then I went back and applied your patch and this time I got 
> something else 
> ______________________________________________________________________
> Mar 13 13:33:10 Y8 kernel: usb 1-2.2: can't set config #1, error -19
> Mar 13 13:33:10 Y8 dbus-daemon[231]: dbus[231]: [system] Activating via 
> systemd: service name='org.freedesktop.PolicyKit1' unit='polkit.service'
> Mar 13 13:33:10 Y8 kernel: usb 1-2.2: USB disconnect, device number 3
> Mar 13 13:33:10 Y8 kernel: usb 2-1: USB disconnect, device number 2
> Mar 13 13:33:10 Y8 kernel: usb 2-2: USB disconnect, device number 3
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: hub_port_status failed (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot reset port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot reset port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot reset port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: unable to enumerate USB device on port 
> 2
> Mar 13 13:33:10 Y8 kernel: hub 2-2:1.0: cannot disable port 2 (err = -19)
> Mar 13 13:33:10 Y8 kernel: usb 4-1: USB disconnect, device number 2
> Mar 13 13:33:10 Y8 kernel: usb 4-1.3: new full-speed USB device number 3 using 
> uhci_hcd
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot reset port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot reset port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot reset port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot reset port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: unable to enumerate USB device on port 
> 3
> Mar 13 13:33:10 Y8 kernel: hub 4-1:1.0: cannot disable port 3 (err = -19)
> ___________________________________________________________________________
> 
> Not sure if it's better or worse but that's where we are right now. :) 
> So I'm back to 3.9 where everything works beatifully (well, almost)

Okay.  We don't need to see all those -19 errors.  The patch below 
(applied on top of the previous patch) will eliminate them.

>  I think I should mention that one thing has chnaged in my installation. I've 
> updated my systemd to 198, but it had no negative effects on 3.9
> 
> Let me know if I should try something else.
> 
> PS I have friend who accidentally also had usb issues with 3.8.2 on nvidia 
> chipsets and I took the liberty to send him your patch. It worked for 
> him....thought It cheer you up a little :)

Good to know.  :-)

Alan Stern



Index: 3.8/drivers/usb/core/hub.c
===================================================================
--- 3.8.orig/drivers/usb/core/hub.c
+++ 3.8/drivers/usb/core/hub.c
@@ -905,11 +905,8 @@ static int hub_usb3_port_disable(struct
 		return -EINVAL;
 
 	ret = hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_SS_DISABLED);
-	if (ret) {
-		dev_err(hub->intfdev, "cannot disable port %d (err = %d)\n",
-				port1, ret);
+	if (ret)
 		return ret;
-	}
 
 	/* Wait for the link to enter the disabled state. */
 	for (total_time = 0; ; total_time += HUB_DEBOUNCE_STEP) {
@@ -946,7 +943,7 @@ static int hub_port_disable(struct usb_h
 			ret = clear_port_feature(hdev, port1,
 					USB_PORT_FEAT_ENABLE);
 	}
-	if (ret)
+	if (ret && ret != -ENODEV)
 		dev_err(hub->intfdev, "cannot disable port %d (err = %d)\n",
 				port1, ret);
 	return ret;
@@ -2679,14 +2676,16 @@ static int hub_port_reset(struct usb_hub
 		status = set_port_feature(hub->hdev, port1, (warm ?
 					USB_PORT_FEAT_BH_PORT_RESET :
 					USB_PORT_FEAT_RESET));
-		if (status) {
+		if (status == -ENODEV) {
+			;	/* The hub is gone */
+		} else if (status) {
 			dev_err(hub->intfdev,
 					"cannot %sreset port %d (err = %d)\n",
 					warm ? "warm " : "", port1, status);
 		} else {
 			status = hub_port_wait_reset(hub, port1, udev, delay,
 								warm);
-			if (status && status != -ENOTCONN)
+			if (status && status != -ENOTCONN && status != -ENODEV)
 				dev_dbg(hub->intfdev,
 						"port_wait_reset: err = %d\n",
 						status);

--
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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux