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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to